wpf - 如何在这种情况下应用 MVVM

标签 wpf mvvm

我在问自己如何在以下场景中正确应用 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/

相关文章:

wpf - 使用mvvm是否存在任何成功的项目? (设计师观点)

wpf - 将 View 模型连接到它们的 View 的首选方法是什么?

wpf - 源更改时组合框 SelectedItem 不更新

c# - 如何在 WPF 应用程序中捆绑 View、ViewModel 和 DataTemplate 以便于重用?

c# - 从聚焦的组合框项目中删除虚线边框

c# - 将并行化 Controller 代码放入MVVM的 View 模型中是否不好

silverlight - 如何在 MVVM 中的模块/ View 之间制作动画?

WPF:将 DataGrid 放入 ComboBox

c# - 调度程序的种类

wpf - 以统一的尺寸垂直布局 ListView 项目