Структура программы
В настоящее время я использую в своем приложении фреймворк 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
было установлено другое значение), RaisePropertyChanged
вызывается для X
. Было бы лучше, если бы мне не приходилось отправлять сообщение об изменении свойства для каждого свойства в моей модели.
Причина в том, что у меня есть еще один экземпляр XClass
, `X2 'в другой ViewModel, и я хочу синхронизировать оба экземпляра.