一句话解释MVVM在WPF?(One sentence explanation to MVVM in

2019-06-26 09:04发布

我听见了它的下一个最好的事情在建设WPF的用户界面,但所有现存的例子有几十行代码 - 我可以得到一个Hello World的MVVM是毫不含糊地解释了什么是它的一回事呢? 我是相当新的C#/。NET为好,所以也许点我的一些资源,可以帮助吗?

非常感激!

Answer 1:

一句话解释:

MVVM是井的reimagining喜爱,其被设计与WPF供给到应用逻辑从UI设计中分离数据绑定设备的工作特别好模型 - 视图 - 演示(MVP)图案。

更长,更实用,解释:

MVVM的基本概念是掰开WPF应用程序为独立的组件的每一个具有在获得在屏幕上的信息的过程中的一个责任。

首先你的模型。 这与通常由一些外源填充诸如数据库或web服务非常有限的功能的类。 例如:

public class MessageModel
{
    public string Message { get; set; }
}

在您层视图模型的顶部,这是那里的应用程序的逻辑坐时,它通知改变模型的视图,并确保数据的一致性。 通过实施视图模型和视图之间INotifyPropertyChanged接口双向绑定,给出了免费的WPF:

public class MessageViewModel : INotifyPropertyChanged
{
     private MessageModel _model;

     public string Message
     {
          get { return _model.Message; }
          set
          {
              if (_model.Message != value)
              {
                  _model.Message = value;
                  OnPropertyChanged("Message");
              }
          }
     }
}

最后,你有观。 这是描述了用于显示和编辑的视图模型中的数据的控件的布局XAML文件:

<Canvas>
     <TextBox Text={"Binding Message"} />
</Canvas>

你去这一切努力的原因是,该模型是非常轻便,跨越域边界轻松通过。 这是简单的发送或接收来自web服务接收,或将其映射到数据库表。 该视图模型,而另一方面是复杂的,但有少数依赖 - 它并不关心这里的模型从得到它的数据,只知道它是存在的,它根本没有一个视图的概念,这使得它非常可验证(在应用程序的逻辑不依赖于一个UI测试)。 最后,XAML是非常区域化的,并且可以切换到谁需要知道什么有关应用程序的逻辑,只有在ViewModel会出现在特定名称的某些数据的设计师。 这种封装使得它很容易在大型项目中定义的角色,或把一个有限的UI测试逻辑对抗,而真正的被抛光。



Answer 2:

MVVM是一个明星粉丝的关系。 风扇知道的明星,但明星不知道风扇。 风扇爱他的明星这么多,如果恒星改变自己(我的意思是他的着装风格),风扇改变自己相应。

现在,取代“明星”与“视图模型”和“粉丝”与“查看”,并再次阅读。



Answer 3:

一个句子? 开始。

MVVM是其中的Xaml(查看)结合于门面(查看模型)使你的程序(模型),以避免具有UI的担忧向下泄漏的层的胆的UI偏析图案。



Answer 4:

简单的语句,帮助我让我的头周围最好的是“我能单元测试我的业务逻辑,而用户界面?” 我想这应该是你问,同时学习和使用MVVM概念设计的问题。



Answer 5:

这个网站有很大的图解释它。

基本上,你有3个组成部分:
1) 模式 -应用程序的数据模型。 这是非常标准的,并与任何MVP或MVC应用程序。
2) 视图 -定义您的应用程序的视图/布局的XAML。
3) 视图模型 -因为WPF要求该视图附加到某些方面的事情(如需要集合实现INotifyCollectionChanged和类似的东西),它一般需要你按摩你的数据一点点地得到它适合视图形式显示。 这是在视图模型代码。它的数据封装成视图模型,视图可以很容易地显示。 这是你的看法XAML会结合。 它必须从模型层对事件做出响应,并进行自我更新。

(然后你的控制器上侧挂的地方 - 最好是使用WPF命令 - 和更改模型,它将触发事件来更新视图模型)



Answer 6:

一图案,其中所述前端(视图)和后端(模态)进行通信(来回),使用共同的介体(图模态)。



Answer 7:

MVVM模式是当与XAML友好的中间目标的UI界面在你的XAML不友好的实际数据得到。



Answer 8:

我会这样说:“用户界面之间的相关分离演示模式,它的逻辑”



Answer 9:

一种改进的答案:

MVVM是所有关于未来; 你想你的应用程序逻辑与框架分开,以使这些框架可以进化,并且您的应用程序可能没有改变,或者你的应用程序可以进化,你将不必担心改变实际UI方面的这么多。

其实,MVVM是一个已经存在了一段时间模式的改进。 我还记得进化模式,当我在MFC中工作。 至少有两个理由这样做。 MFC或<>是相当复杂的,并混合MFC构造与应用程序逻辑使得应用种脆。 例如:用替换的组合框(或选择器在现代术语)列表框要困难得多,如果用于支持列表/选择器的内容的逻辑与逻辑组合以操纵列表/选择器本身。



Answer 10:

一些非常好的一个句子(或接近)已经解释。 我只是说添加到它,如果你过了基层和你想的是如何在现实世界的应用程序,具有菜单,工具栏,选项对话框,对接工具窗口等使用MVVM的例子,看看肥皂盒核心 ,这用肥皂盒核心演示 。 它是开源的,所以你可以得到很多的想法。



Answer 11:

因为你不能将数据绑定到你自己的代码隐藏

(只有半开玩笑地在这里)



文章来源: One sentence explanation to MVVM in WPF?