MVVM框架解析(一)

摘要:
我花了一点时间看了看微软的开源MVVM代码,这非常有意义!事实上,这是一个更详细的分工,DocumentManagerAdapter Cs是程序逻辑层(VM层)。在运行后的窗口中,框架有两个tabItem和多个文档。可以看出,该框架是多文件的,因此需要DocumentManager。Cs是数据管理层,它进一步管理应用程序打开的所有文档。事实上,这个层仍然停留在M层。Main中定义了四个全局变量,varapplication=newMvvmDemo。看法App();varmainWindow=newMvvmDemo.View。MainApplicationWindow();vardocContainer=mainWindow。MasterDocumentContainer;varadapter=newMvvmDemo.View。DocumentManagerAdapter;前面已经提到了这四种类型中的两种。对象docContainer是mainWindow对象中的一个变量,它实际上可以用作控件TabControl。

   花了一点时间看了一下微软开源MVVM代码,受义很多!

  从代码整体上看,代码分为四大类,MVVM框架解析(一)第1张  

从图中看不能明白我要表达的意思。显而意见!MainApplicationWindow.xaml是应用程序主窗口(V层),DocumentManager.cs是数据管理层,PersonViewModel.cs 是数据层(M层)。

DocumentManagerAdapter.cs可能有点难以明白,为什么DocumentManager.cs数据管理层,为什么还要Adapter层呢!其实这是分工更细化,DocumentManagerAdapter.cs是程序逻辑层(VM层)

MVVM框架解析(一)第2张

从运行后窗口看,框架有两个tabItem多文档,从这里可以看出框架是多档,所以要DocumentManager.cs是数据管理层,将应用程序打开的所有文档进一步的管理,其实这层还是停留在M层。

整体了解了下,现在开始分析细节,四个类三层是怎样结合到一起的呢!

 1 namespace MvvmDemo {
 2 
 3     /// <summary>
 4     /// Contains the <c>Main()</c> method that starts the application
 5     /// </summary>
 6     public static class MainMvvmDemonstrationApplication {
 7 
 8         /// <summary>
 9         /// Starts the application
10         /// </summary>
11         /// <param name="args">The collection of program arguments.</param>
12         [STAThread]
13         public static int Main(string[] args) {
        ......
25 try { 26 #endif 27 ........30 31 // Initializes an instance of your System.Windows.Application derived class 32 var application = new MvvmDemo.View.App(); 33 34 // Instantiates the main window class 35 var mainWindow = new MvvmDemo.View.MainApplicationWindow(); 36 37 // Initializes the view-model layer with the view layer’s document manager adapter 38 // and tie it into the persistence layer 39 /**********************************************************************************/ 40 // 这两句很重要 41 // docContainer是主窗口tab控件 42 // adapter是tab的文档管理类 43 var docContainer = mainWindow.MasterDocumentContainer; 44 var adapter = new MvvmDemo.View.DocumentManagerAdapter(docContainer); 45 /**********************************************************************************/
46          .......

52 application.Run(mainWindow); 53            ........ 64 } 65 66 67 }//class 68 69 }//namespace

出点一些多途的代码,现在看条理就清楚多了。在Main定义了四个全局变量,

var application = new MvvmDemo.View.App();
 var mainWindow = new MvvmDemo.View.MainApplicationWindow();
 var docContainer = mainWindow.MasterDocumentContainer;
 var adapter = new MvvmDemo.View.DocumentManagerAdapter(docContainer);

这四个类型在前面已经说到了两个,对象
docContainer 是 mainWindow 对象中的变量,其实可以当作控件TabControl。对象application有一点编程经验的都知道,不明白可以到网上找找,我在这里不多讲了。

在前面不是说了还有一个DocumentManager.cs怎么在这里没有看到它呢,先别急,我先分析完对象 DocumentManagerAdapter这个对象里有一个引用mainWindow中的docContainer (相当于TabControl)
其实DocumentManagerAdapter里还有一个DocumentManager对象,因为它是mainWindow和DocumentManager之间的桥梁(相当于VM层)这样理解还不如说docContainer (相当于TabControl)和Document这间要桥梁。

很晚了,有时间在接着下吧!代码在后文本加上。

免责声明:文章转载自《MVVM框架解析(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇apache(一)android开发中常用的快捷键下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IOS:被误解的MVC和被神化的MVVM

MVC的历史   MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。它表示的是一种常见的客户端软件开发框架。 MVC 的概念最早出现在二十世纪八十年代的 施乐帕克 实验室中(对,就是那个发明图形用户界面和鼠标的实验室),当时施乐帕克为 Smalltalk 发明了...

一个简单的WPF MVVM实例【转载】

引用地址:http://blog.csdn.net/yl2isoft/article/details/20838149 1新建WPF应用程序WPFMVVMExample 程序结构如下图所示。 2Model实现 在Model文件夹下新建业务类StudentModel(类文件StudentModel.cs),类的详细代码如下所示。 [csharp]vie...

搞懂:MVVM模型以及VUE中的数据绑定数据劫持发布订阅模式

搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : model - view - viewmodel的缩写,说都能直接说出来 model:模型,view:视图,view-Model:视图模型 V:视图,即浏览器最前端渲染的页面 M:模型,数据模型,就是后端页面渲染依赖的数据 VM:稍后再说,因为暂时还不知道怎么工作,什么场景,直接解释有...

为 ItemsControl 类型的控件提供行号,mvvm模式 绑定集合

从网络上看到的两种方式,一种是,在 codebehind 里为 控件写事件,下面是将集合绑定到 DataGrid 控件: private void DataGridSoftware_LoadingRow(object sender, DataGridRowEventArgs e) { e.Row.Header = e.Row.GetIndex()...

.NET的MVVM框架

Model-View-ViewModel是 一种架构模式,主要在WPF、Silverlight和WP7开发里使用,它的目标是从视图层移除几乎所有代码隐藏(code-behind)。交互设计 师可以专注于使用XAML表达用户体验需求,然后创建和视图模型的绑定,而视图模型则是由应用程序开发者开发和维护的。 MVVM是更加通用的Presentation模式的一...

Prism完成的一个WPF项目

Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 终极篇 本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结。 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点; 中级篇主要针对WPF布局与MaterialDesig...