UWP - 检测儿童财产价值何时发生变化?

时间:2018-04-16 16:55:19

标签: c# events binding uwp prism

我正在使用UWP和Prism创建应用程序。我有一个对象ParentObject,它具有子属性,例如int Child。我想在SomeMethod(ParentObject)的子属性更改时调用ParentObject。这些对象在UI中绑定,一切都正常。

我最初的直觉是,当子属性发生变化时,set上的ParentObject访问器会被调用(参见下面的注释行),但事实并非如此。仅调用set的{​​{1}}访问者。 我怎样才能达到同样的效果?

int Child

感谢您的帮助。

1 个答案:

答案 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);
    }
}