当子属性发生变化时,为父类调用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"
}
<标题>
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
被设置为不同的值),RaisePropertyChanged
被X
调用。如果我不必为我的模型中的每个属性发送属性更改消息,那将是最好的。
背后的原因是,我有另一个实例的XClass
, ' X2'在另一个ViewModel,我想保持两个实例同步。
比邻星,
你能提供更多的信息,当一个子成员被设置时,你试图通过触发PropertyChangedEvent来完成X吗?通常在WPF中,您需要关注只有为您绑定的属性/支持字段引发该事件,在本例中是X.S.。当X的成员被设置在我提供的场景之外时,是否有一个特定的用例来通知?