wpf - 为什么选择 MVVM?它的核心优势是什么?

标签 wpf mvvm

为什么在处理 WPF 时我们选择 MVVM 而不是 MVC 或 MVP?

使用它我们可以获得什么额外的好处?

编辑:

说实话,今天我去面试,也被问到了这个问题。我回答像 INotifyPropertyChanged , ICommand,IValue Converter.. 但他不满意。从此我提出了这个问题

提前致谢

最佳答案

我会向您指出一个特别有用的 video作者:杰森·多林格。

来自 WinForms 世界,实现任何 MVX 样式模式似乎都比其值(value)更麻烦,但在使用 WPF 几年后,我可以诚实地说,我不会考虑任何其他事情。整个范例都是开箱即用的。

首先,主要好处是实现 View 模型之间的真正分离。这实际上意味着,如果/当您的模型需要更改时,无需 View 即可更改,反之亦然。

其次,虽然您的 model 可能包含您的 view 中可能需要的所有数据,但您可能希望以您的 型号 不支持。例如,假设您的模型包含日期属性。在模型中,它可以单独作为 DateTime 对象存在,但您的 View 可能希望以完全不同的方式呈现它。如果没有 viewmodel,您要么必须复制 model 中的属性来支持 View ,要么修改属性,这可能会严重混淆“模型”。

您还可以使用viewmodel来聚合存在于单独的类/库中的模型部分,以便为view提供更流畅的界面来处理。您非常不太可能希望以用户希望或希望向他们呈现数据的方式来处理代码中的数据。

最重要的是,您可以获得对 viewviewmodel 之间自动双向数据绑定(bind)的支持。

确实有一大堆额外的东西我可以讲,但杰森说它比我能讲的更好,所以我的建议是观看视频。这样工作几天后,您会想知道如果没有它,您是如何度过的。

祝你好运。

关于wpf - 为什么选择 MVVM?它的核心优势是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644453/

相关文章:

c# - 如何将行为移到单独的类中

c# - 单击另一个 DataGrid 时如何失去对 DataGrid 的焦点?

data-binding - Windows Store 应用程序上的条件样式(或 Style.Triggers->DataTrigger 等效项)的最佳实践?

c# - 如何将 Byte[] 转换为 BitmapImage

wpf - 连接 CollectionChanged 和 PropertyChanged (或 : Why do some WPF Bindings not refresh? )

c# - MVVM 的通用接口(interface)

ios - 确保属性观察者 didSet 在 vi​​ewDidLoad 之后操作用户界面

data-binding - 按下回车键时数据未绑定(bind)

c# - 当应用程序未使用那么多内存时如何获得 System.OutOfMemoryException

c# - 如何级联新窗口打开的位置?