我正在寻找有关我正在组合的 WPF/MVVM 应用程序的一些指导。谷歌今天没有帮助我。
所以我有一个带有一些模型(域对象)的应用程序,这些模型具有其他模型作为属性。现在,我只是将嵌套对象展平,并在包含对象的 ViewModel 中公开属性。
随着我的模型变得越来越复杂,我正在努力解决如何在某种程度上分解 ViewModel。我正在走向一个“复合视图”,其中“包含”对象有它的 View & ViewModel,而“嵌套”对象也有它自己的。这也会给我一些可重用的代码,这将是一个加号。
作为一个超级简单的例子,假设我有一个建筑物,每个建筑物都有一些属性和一个地址,如下所示:
public class Building
{
public string Name { get; set;}
public Address Address { get; set;}
}
public class Address
{
public string Number { get; set; }
public string Street { get; set; }
}
然后,我有一个用于建筑物的 ViewModel,以及一个用于地址的 ViewModel(由 BuildingViewModel 公开):
public class BuildingViewModel
{
public string Name { get; set; } // from model
public AddressViewModel Address { get; set; } // a wrapped instance of Address
// INPC, etc...
}
public class AddressViewModel
{
public string Number { get; set; } // originally from Building
public string Street { get; set; }
// INPC, etc...
}
因此,我有一个 BuildingView 和一个嵌套的 AddressView,但未显示。我只是先将 ViewModel 与数据模板一起使用。
现在,如何保持 Address 对象同步?一旦我将它们分成两个 ViewModel,我就会得到 Address 对象的两个实例。在我所做的所有搜索中,我看到使用来回传递对象的消息,并且提到了“观察者”模式。
我是朝着正确的方向前进,还是我错过了一些非常简单的东西?任何建议表示赞赏。
FWIW,我拼凑了自己的框架,因为我一直对学习曲线持怀疑态度。另外,到目前为止它相当简单。