这是一个简单的问题,我在网上搜索了几个小时也没有找到答案...
我有一个模型和一个视图模型,其中包含一个属性。为了在视图中查看此属性,我使用一个视图模型对象,该对象应自动从模型对象生成,并反之亦然。当然,以下代码将引发StackOverflowException异常,因为在模型中更新模型对象会导致在视图模型中更新视图模型对象,这又会导致在模型中更新模型对象,以此类推...
class ModelObject
{
...
}
class ViewModelObject
{
...
}
class Model : INotifyPropertyChanged
{
private ModelObject modelObject = new ModelObject();
...
public ModelObject ModelObject
{
get
{
return this.modelObject;
}
set
{
this.modelObject = value;
this.NotifyPropertyChanged("ModelObject");
}
}
}
class ViewModel : INotifyPropertyChanged
{
private ViewModelObject viewModelObject = new ViewModelObject();
private Model model = new Model();
...
public ViewModel()
{
this.model.PropertyChanged += new PropertyChangedEventHandler(this.propertyChangedEvent);
}
public ViewModelObject ViewModelObject
{
get
{
return this.viewModelObject;
}
set
{
this.viewModelObject = value;
this.model.ModelObject = new ModelObject(...);
this.NotifyPropertyChanged("ViewModelObject");
}
}
private void propertyChangedEvent(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName.Equals("ModelObject"))
{
this.ViewModelObject = new ViewModelObject(...);
}
}
}
什么是同步这两个对象的常见方式?