我在问自己如何在以下场景中正确应用 MVVM:
假设我有简单的主从数据,比如一个有 0-n 个地址的人。
地址应显示在 ListBox 中,并且用户应该能够为每个地址触发特定操作。
所以我所做的是创建一个返回人员模型和地址模型的 VM。
那么问题是,我想在地址 DataTemplate 中创建按钮。但是为了使按钮工作,我需要每个地址公开的命令,该命令可以绑定(bind)到按钮上的适当属性。
我的问题是,如果它真的是正确的方法来包装(在这种情况下)每个地址在另一个对象中暴露必要的功能?我想避免我必须维护第二个地址 View 模型列表,这取决于第一个列表与模型对象的变化。
蒂亚
马丁
最佳答案
这听起来像是正确的方法。
将 UI 直接绑定(bind)到域模型类总是很诱人,但经验表明,您不妨总是在 UI 和域模型之间滑动一个 ViewModel。这确保了特定于 UI 的成员(例如您提到的 ICommand 属性)留在 UI 中并且不会侵入域模型。
在某些情况下,领域模型似乎几乎适合,甚至完全适合预期的 UI。在这些情况下,很难抵制将领域模型直接绑定(bind)到 View 的冲动。
但是,很可能稍后会出现特定于 View 的要求,然后您将不得不在那个时候引入 ViewModel - 而这通常是您没有真正有时间这样做的时候.
如果您可以简单地说:“所有域对象都包装在一个 ViewModel 中,然后绑定(bind)到 Views”,它也会使您的应用程序架构更容易理解。
关于wpf - 如何在这种情况下应用 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1392531/