【发布时间】:2011-11-23 12:12:23
【问题描述】:
我的 App 类中有一个对象 Order,它们都实现了 INotfiyPropertyChanged。 订单结束后,我将其设置为 null 并执行 new Order() 以重新启动新订单。
问题是:似乎其 DataContext 绑定到 Order 的对象似乎总是链接到旧的 Order
如果我重新启动订单时不必再次手动重新绑定,我该怎么做? 对于具有此 DataContext 的每个对象,我需要执行 object.DataContext= App.Order。我该怎么做才能避免这种情况?
一些代码:
public partial class App : Application, INotifyPropertyChanged
{
private Order m_order = new Order();
public Order Order
{
get { return m_order; }
set
{
m_order = value;
NotifyPropertyChanged("Order");
}
}
//...
public bool getOrderClosed()
{
if (Order != null)
{
Order = null;
}
return (Order == null);
}
public bool getOrderOpened()
{
if (Order == null)
Order = new Order();
return (Order != null);
}
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
//code on the part where the order is finished
private void Confirm_Click(object sender, RoutedEventArgs e)
{
//...
if (SaveOrder())
{
theApp.getOrderClosed();
theApp.getOrderOpened();
theApp.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.Basket.DataContext = theApp.Order;
}
}
【问题讨论】:
-
向我们展示您的确切代码。包含属性实现、设置为 null 和似乎没有更新的绑定。
-
这一行现在正在解决问题。 theApp.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.Basket.DataContext = theApp.Order;
标签: wpf data-binding null new-operator datacontext