3
假设您有一个具有属性的对象和一个绑定到该对象属性的控件。该对象发生更改时会发生什么?WPF:绑定到对象的属性;当对象改变时会发生什么?
例如,视图模型:
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"); }
}
}
,然后在窗口(已经视图模型设定为它是DataContext),你有一个绑定到这个对象的控件,如:
<TextBlock Text={Binding TheObject.TheProperty.ObjectToBindTo}/>
然后你重置ViewModel.TheObject某处(绑定提出后):
ViewModel.TheObject = new TheObjectClass();
在我的测试(没有具体的代码,这是在代码的只是一个简单的例子我应用程序),似乎有时候绑定会存活,有时会停止工作。我应该在这里发生什么?对我来说,当父对象被实例化为一个不同的对象时,属性绑定会中断,但有时它似乎生存下来,这真的让我感到困惑。
感谢您的快速和翔实的答案! – JPProgrammer 2013-02-28 05:50:45
@JPProgrammer“实际上,绑定偶尔不会存活”......所以,如果链中的一个对象为空,那么如何避免或防止绑定被破坏? – blt 2013-10-29 01:05:04
@blt除了没有链中的对象变为空,我不是100%确定的,实际上。我主要是得到顶级绑定刷新,这导致它再次找到它... – 2013-10-29 16:38:35