首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF中MVVM的一句话解释?

WPF中MVVM的一句话解释?
EN

Stack Overflow用户
提问于 2009-07-20 12:02:15
回答 11查看 10K关注 0票数 35

我听说它是构建WPF UI的下一个最好的东西,但是所有现有的例子都有几十行代码--我能得到一个MVVM的Hello World吗,它明确地解释了它的全部内容?我也是C#/.net的新手,所以也许可以给我一些有用的参考资料?

非常感谢!

EN

回答 11

Stack Overflow用户

发布于 2009-07-20 12:17:19

一句话解释:

MVVM是对广受欢迎的模型-视图-展示者( Model-View-Presenter,MVP)模式的重新构想,旨在与WPF提供的数据绑定工具很好地配合使用,从而将应用程序逻辑与UI设计分开。

更长,更有用的解释:

MVVM的基本概念是将WPF应用程序拆分成单独的组件,每个组件在屏幕上获取信息的过程中都有一个职责。

首先,你有一个模型。这是一个功能非常有限的类,通常是从一些外部源填充的,例如数据库或very服务。例如:

代码语言:javascript
复制
public class MessageModel
{
    public string Message { get; set; }
}

在此基础上,对ViewModel进行分层,这是应用程序逻辑所在的位置,它通知视图模型的更改并确保数据一致性。通过实现INotifyPropertyChanged接口,实现了ViewModel与视图之间的双向数据绑定。

代码语言:javascript
复制
public class MessageViewModel : INotifyPropertyChanged
{
     private MessageModel _model;

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

最后,您得到了View。这是一个xaml文件,描述了用于在ViewModel中显示和编辑数据的控件的布局:

代码语言:javascript
复制
<Canvas>
     <TextBox Text={"Binding Message"} />
</Canvas>

之所以要进行所有这些工作,是因为模型是非常轻量级的,很容易跨域边界传递。从map服务发送或接收它或将其映射到数据库表都很简单。另一方面,ViewModel很复杂,但几乎没有依赖关系-它不关心模型从哪里获取数据,只关心它在哪里,而且它根本没有视图的概念,这使得它非常可测试(应用程序的逻辑不依赖于UI来测试)。最后,xaml被很好地划分,并且可以交给不需要了解应用程序逻辑的设计人员,只需要知道ViewModel将以特定的名称呈现特定的数据。这种封装使得在大型项目中定义角色变得非常容易,或者将有限的UI放在一起来测试逻辑,而实际的UI正在被打磨。

票数 76
EN

Stack Overflow用户

发布于 2010-02-07 16:44:10

MVVM是一种明星-粉丝关系。粉丝认识明星,但明星不认识粉丝。粉丝非常爱他的明星,如果明星改变了自己(我指的是他的着装风格),粉丝也会相应地改变自己。

现在用"ViewModel“替换"star”,用"View“替换"fan”,再读一遍。

票数 40
EN

Stack Overflow用户

发布于 2009-07-20 12:16:54

一句话?开始吧。

MVVM是一种UI分离模式,其中Xaml (视图)绑定到外观(视图模型),允许程序(模型)的内部避免UI问题泄漏到层中。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1153147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档