我正在使用UWP和Prism创建应用程序。我有一个对象ParentObject
,它具有子属性,例如int Child
。我想在SomeMethod(ParentObject)
的子属性更改时调用ParentObject
。这些对象在UI中绑定,一切都正常。
我最初的直觉是,当子属性发生变化时,set
上的ParentObject
访问器会被调用(参见下面的注释行),但事实并非如此。仅调用set
的{{1}}访问者。
我怎样才能达到同样的效果?
int Child
感谢您的帮助。
答案 0 :(得分:0)
在MyViewModel.Parent属性设置器中,您需要分离前一个,然后在值上附加一个新的PropertyChanged事件。
public class MyViewModel : BindableBase
{
private ParentObject _parent;
public ParentObject Parent
{
get { return _parent; }
set
{
if (_parent != null)
{
_parent.PropertyChanged -= OnChildPropertyChanged;
}
_parent = value;
RaisePropertyChanged(nameof(Parent);
if (value != null)
{
value.PropertyChanged += OnChildPropertyChanged;
}
SomeMethod(Parent);
}
}
public void SomeMethod(ParentObject obj) { ... }
private void OnChildPropertyChanged(object sender, PropertyChangedEventArgs args)
{
SomeMethod(Parent);
}
}