假设您有一个具有属性的对象和一个绑定到该对象的属性的控件。当该对象更改时会发生什么?
例如,视图模型:
public class TheViewModel : INotifyPropertyChanged
{
private TheObjectClass theObject;
public TheObjectClass TheObject
{
get { return theObject; }
set { theObject = value;
OnPropertyChanged("TheObject"); }
}
}
对象的类:
public class TheObjectClass : INotifyPropertyChanged
{
private ThePropertyClass theProperty;
public ThePropertyClass TheProperty
{
get { return theProperty; }
set { theProperty= value;
OnPropertyChanged("TheProperty"); }
}
}
物业等级:
public class ThePropertyClass : INotifyPropertyChanged
{
private object objectToBindTo;
public object ObjectToBindTo
{
get { return objectToBindTo; }
set { objectToBindTo= value;
OnPropertyChanged("ObjectToBindTo"); }
}
}
然后在一个窗口(将 ViewModel 设置为 DataContext)中,您有一个绑定到该对象的控件,例如:
<TextBlock Text={Binding TheObject.TheProperty.ObjectToBindTo}/>
然后在某处重置 ViewModel.TheObject(在绑定完成后):
ViewModel.TheObject = new TheObjectClass();
在我的测试中(不是专门针对此代码,这只是我的应用程序中代码的简化示例),有时绑定会存活,有时会停止工作。我应该期待在这里发生什么?对我来说,当父对象实例化为另一个对象时,属性绑定会中断,这似乎是合乎逻辑的,但有时它似乎仍然存在,这真的让我感到困惑。