当子属性发生变化时,为父类调用RaisedPropertyChanged

本文关键字:父类 调用 RaisedPropertyChanged 变化 属性 | 更新日期: 2023-09-27 18:11:32

程序结构

目前我在我的应用程序中使用MVVMLight 4.1框架。

我有一个视图模型XViewModel,它围绕着XClass, X的实例。X具有许多与S类似的性质。我也有另一个实例的XClass在另一个ViewModel。

ViewModel

public XViewModelClass XViewModel : ViewModelBase
{
    public XClass X
    {
        get
        {
            return x;
        set
        }
            if(value == x)
            {
                return;                 
            }
            var oldValue = x;
            x = value;
            RaisePropertyChanged(XPropertyName, oldValue, x, true)
        }
    }
    private XClass x;
    public const string XPropertyName = "X"
}

ViewModel2

public YViewModelClass YViewModel : ViewModelBase
{
    public YViewModel()
    {
        Messenger.Default.Register<PropertyChangedMessage<XClass>>(this, message =>
        {
            X2 = message.NewValue
        });
    }
    public XClass X2
    {
        get
        {
            return x2
        set
        }
            if(value == x2)
            {
                return;                 
            }
            var oldValue = x2
            x2= value;
            RaisePropertyChanged(X2PropertyName)
        }
    }
    private string x2;
    public const string XPropertyName = "X2" 

}

public class X : ObservableObject
{
    public string S
    {
        get
        {
            return s;
        set
        }
            if(value == S)
            {
                return;                 
            }
            s = value;
            RaisePropertyChanged(SPropertyName)
        }
    }
    private string s;
    public const string XPropertyName = "S" 
}
<标题>

我如何确保当X中的任何属性发生变化时(例如S被设置为不同的值),RaisePropertyChangedX调用。如果我不必为我的模型中的每个属性发送属性更改消息,那将是最好的。

背后的原因是,我有另一个实例的XClass, ' X2'在另一个ViewModel,我想保持两个实例同步。

当子属性发生变化时,为父类调用RaisedPropertyChanged

比邻星,

你能提供更多的信息,当一个子成员被设置时,你试图通过触发PropertyChangedEvent来完成X吗?通常在WPF中,您需要关注只有为您绑定的属性/支持字段引发该事件,在本例中是X.S.。当X的成员被设置在我提供的场景之外时,是否有一个特定的用例来通知?