MVVM架构----------入门与提高(逐步完善版本)
MVVM架构入门与提高
1.本文介绍:
因最近做了一个小程序(屠宰场轨道屠宰计划控制程序)中用到了WF和WPF混合技术,没有进行代码设计模式的应用,所以有意向想把此程序重写,所以学习了MVVM;本博客是根据视频教程中的内容进行局部总结,如果有漏下的还请读者给予留言,一起完善和学习。视频时长2小时40分,总共5段视频,如果你会MVVM的可以一起把5段视频一期看完,如果不会的我个人觉得可以慢慢来看,不可以当电影来看,这样你看了以后又忘记了,而且也不易于理解和掌握。下面进入正题。
2.所需资源:
1.视频地址
Prism For Wpf 4.x
MVVM入门与提高_Vedio.part01.rar
MVVM入门与提高_Vedio.part02.rar
MVVM入门与提高_Vedio.part03.rar
MVVM入门与提高_Vedio.part04.rar
MVVM入门与提高_Vedio.part05.rar
MVVM入门与提高_Vedio.part06.rar
MVVM入门与提高_Vedio.part07.rar
3.视频观后总结
1.Code Snippet
学会使用Code Snippet 可以有效的提高代码的书写速度。查看Code Snippet的方法如下:
选择"菜单栏"==>工具(T)==>代码段管理器==>语言选择(Visual
C#)==>查看说明找到 .snippet文件的存储目录如下:
C:\\Program Files\Microsoft Visual Studio 11.0\VC#\Snippets\2052\Visual C#\
a.打开一个snippet文件
以propfull.snippet文件为例源码如下:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>propfull</Title>
<Shortcut>propfull</Shortcut>
<Description>属性和支持字段的代码段</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<ToolTip>属性类型</ToolTip>
<Default>int</Default>
</Literal>
<Literal>
<ID>property</ID>
<ToolTip>属性名</ToolTip>
<Default>MyProperty</Default>
</Literal>
<Literal>
<ID>field</ID>
<ToolTip>支持此属性的变量</ToolTip>
<Default>myVar</Default>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[private $type$ $field$;
public $type$ $property$
{
get { return $field$;}
set { $field$ = value;}
}
$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
b.另存为修改snippet文件
我们针对如上代码进行另存为 proprp.snippet,对代码进行修改增加一行
this.RaisePropertyChanged($property$);
c.Snippet文件的使用方法
键盘输入Snippet的文件名如proprp按2下Tab键会自动生成出一个属性定义结构代码。 然后按Tab键对类型和名称进行重写。这样就可以快速书写代码。
4.MVVM的好处
此处为观看视频后的个人的总结,对程序进行解耦合,增加代码的可读性,在不改变业务逻辑的基础上可以任意对UI进行更换,甚至可以有设计师直接把UI做好,开发人员直接用即可,详细可以参看视频中的讲解,例如第一个实例中的把TextBox代码换成Spliter的情况。
5.MVVM中的ViewModel中属性类型
a.数据属性
a.命令属性
详细请看下图:
6.利用第3方的 Prism
详情可以参考官方文档下载地址为
Prism 4.x - 5.x 文档
7.View Xaml 中值得注意的地方
a.Binding 与 DataContext 的关系:
如果View 中的 Xaml没有对其进行 DataContext 的绑定的时候,WPF会自己进行向上查找 DataContext,直到找到 Windows ,所以我们在构造函数写如下代码就可以了,代码如下:
class MainWindow
{
MainWindow()
{
//省略的其他代码
this.DataContext = new MainWindowViewModel();
}
}
Xaml中可以直接用 Text={Binding YourValue} 的形式即可,详情可以参考我上传的代码。
b.DataGrid 的 ItemSource的重要性 和 DataGridTemplateColumn 中CheckBox模板列的处理绑定方式。
可以参看源代码。
8.如果有哪里写错的希望大家给予留言和指导,共同学习。
9.本人根据视频,自己整理出来的源代码,和视频中的例子基本吻合
详细参看代码
点击打开链接