目前我在我的应用程序中使用MVVMLight 4.1框架。
我有一个视图模型XViewModel
,它包含XClass
,X
的实例。 X
包含许多属性,例如S
。我在另一个ViewModel中还有另一个XClass
实例。
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"
}
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
设置为其他值)时,RaisePropertyChanged
会调用X
。如果我不必为模型中的每个属性发送属性更改消息,那将是最好的。
背后的原因是我在另一个ViewModel中有另一个XClass
,“X2”的实例,我想让两个实例保持同步。
答案 0 :(得分:0)
Proximo软体,
当您设置子成员时,是否可以通过为X触发PropertyChangedEvent来提供有关您要完成的内容的更多信息?通常在WPF中你会担心 仅限于为您绑定的属性/支持字段引发该事件,在本例中为X.S.是否有一个特定的用例,当X的成员被设置在我提供的场景之外时被通知?