35 wpf user-interface design-patterns mvvm
我听说它是构建WPF UI的下一个最好的东西,但是所有现有的例子都有几十行代码 - 我可以获得一个MVVM的Hello World,它可以毫不含糊地解释它的全部内容吗?我对C#/ .net也很新,所以也许指点一些可能有用的资源?
非常感激!
Mar*_*ris 74
一句话解释:
MVVM是对备受好评的Model-View-Presenter(MVP)模式的重新构想,该模式旨在与WPF提供的数据绑定工具一起使用,以将应用程序逻辑与UI设计分开.
更长,更有用的解释:
MVVM的基本概念是将WPF应用程序拆分为单独的组件,每个组件在获取屏幕信息的过程中都有一个责任.
首先你有模型.这是一个功能非常有限的类,通常从某些外部源(如数据库或Web服务)填充.例如:
public class MessageModel
{
public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
最重要的是,您将ViewModel分层,这是应用程序逻辑所在的位置,它会通知视图模型的更改并确保数据的一致性.通过实现INotifyPropertyChanged接口,ViewModel和视图之间的双向数据绑定由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");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后你有了View.这是一个xaml文件,描述了用于在ViewModel中显示和编辑数据的控件的布局:
<Canvas>
<TextBox Text={"Binding Message"} />
</Canvas>
Run Code Online (Sandbox Code Playgroud)
您完成所有这些工作的原因是模型非常轻量级,并且很容易跨域边界传递.从Web服务发送或接收它或将其映射到数据库表很简单.另一方面,ViewModel很复杂,但依赖性很少 - 它不关心模型从何处获取数据,只关注它的存在而且它根本没有视图的概念,这使得它非常可测试(您的应用程序的逻辑不依赖于UI来测试).最后,xaml被很好地区分开来,可以交给一个设计师,他不需要知道应用程序的逻辑,只有ViewModel会以某些名称呈现某些数据.这种封装使得在大型项目中定义角色非常容易,或者将有限的UI组合在一起来测试逻辑,而真正的角色正在被抛光.
Abd*_*med 39
MVVM是一个明星粉丝关系.粉丝知道明星,但明星不知道粉丝.球迷非常喜欢他的明星,如果明星改变自己(我的意思是他的穿衣风格),球迷会相应地改变自己.
现在将"star"替换为"ViewModel",将"fan"替换为"View"并再次阅读.
Bal*_*all 14
一个句子?开始.
MVVM是一种UI隔离模式,其中Xaml(View)绑定到一个Facade(View Model),允许您的程序(Model)的内容避免让UI关注漏掉一层.
这个网站有一个很棒的图表来解释它。
基本上,您有 3 个组件:
1)模型- 应用程序的数据模型。这是非常标准的,与任何 MVP 或 MVC 应用程序相同。
2)视图- 定义应用程序的视图/布局的 XAML。
3)视图模型- 因为 WPF 要求视图以某种方式附加到事物上(例如要求集合实现 INotifyCollectionChanged 之类的东西),所以它通常要求您对数据进行一些修改,以使其成为适合视图的形式显示。这是视图模型编码的地方。它将数据打包到视图可以轻松显示的视图模型中。这就是您的视图 XAML 将绑定到的内容。它必须响应来自模型层的事件并更新自身。
(然后您的控制器挂在侧面某处 - 最好使用 WPF 命令 - 并对模型进行更改,这会触发事件来更新视图模型)
归档时间: |
|
查看次数: |
9409 次 |
最近记录: |