我有下一个依赖属性:
public static DependencyProperty RequestObjectProperty = DependencyProperty.Register("RequestObject", typeof(RegistrationCardSearch), typeof(RegCardSearchForm),new UIPropertyMetadata(Changed));
private static void Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MessageBox.Show("Property Changed!!!");
}
public RegistrationCardSearch RequestObject
{
get
{
return (RegistrationCardSearch)GetValue(RequestObjectProperty);
}
set
{
SetValue(RequestObjectProperty, value);
}
}
和“已更改”我的依赖项属性更改时必须触发的方法。我的房产类型是 RegistrashionCardSearch (类)。当我在依赖属性中更改类的属性值时,属性更改回调未被触发。为什么??我的 RegistrashionCardSearch 类实现了INotifePropertyChanged接口
答案 0 :(得分:3)
只有在属性本身更改时才会触发更改的事件,而不是在更改此属性中的值时触发。给出一个会导致更改事件触发的示例:
var requestObject = myObject.RequestObject;
myObject.RequestObject = new RegistrationCardSearch() { ... };
更改的事件将触发此示例的最后一行,因为属性本身会更改为另一个值。
然而,当你做这样的事情时:
myObject.RequestObject.SomeProperty = newPropertyValue;
更改的事件不会触发,因为您没有更改RequestObject
属性本身,只是属性中的某个值。
答案 1 :(得分:1)
Ronald已经很好地解释了为什么你的方法不起作用。要使其发挥作用,您需要订阅PropertyChanged
的{{1}}事件:
RequestObject