新建WPF工程后要做的那些事(MVVM模式)
posted @ 2012-11-25 16:30 from [FreedomShe]
1. 实现单例。
2. 加入MVVM支持库Prism。(加速MVVM模式开发)
3. 定义符合Prism属性格式的Code Snippet。(加速开发)
1. 实现单例。fromWPF程序单例实现
重载App的OnStartup方法:
1 public partial class App : Application 2 { 3 protected override void OnStartup(StartupEventArgs e) 4 { 5 Process process = Process.GetCurrentProcess(); 6 foreach (Process p in Process.GetProcessesByName(process.ProcessName)) 7 { 8 if (p.Id != process.Id) 9 { 10 //关闭第二个启动的程序 11 MessageBox.Show("您的程序已经启动!"); 12 Application.Current.Shutdown(); 13 return; 14 } 15 } 16 base.OnStartup(e); 17 } 18 }
2. 加入MVVM支持库Prism。from《深入浅出WPF》系列视频(特辑)——MVVM入门与提高(难度300+)
添加Microsoft.Practices.Prism.dll引用
工程->引用->右键添加引用->浏览->找到自己的Microsoft.Practices.Prism.dll(如果没有安装Prism需下载解压,地址见下文)
加入Prism引用后,ViewModel就可以这么写了:
class MainWindowViewModel : NotificationObject { //属性 private String newContent; public String NewContent { get { return newContent; } set { newContent = value; RaisePropertyChanged("NewContent"); } } //命令 public DelegateCommand ConvertStringCommand { get; set; } private void ConvertStringExecute() { //TODO } //ViewModel的构造函数 public MainWindowViewModel() { ConvertStringCommand = new DelegateCommand(new Action(ConvertStringExecute)); } }
下载Prism:http://compositewpf.codeplex.com/releases/view/55576 Prism针对很多应用平台有不同的版本,我下的Prism for .NET 4.5——Microsoft.Practices.Prism.zip 可用于桌面应用开发。我用的这个版本里面只有4个dll,实际上我只需要用一个:Microsoft.Practices.Prism.dll,解压到自己的文件夹即可,开发的时候引用进去。
Notice: Prism for .NET 4.5需要.NET 4.5框架支持,如果客户机没有安装.NET 4.5 Framework会导致界面无法显示。另外Visual studio 2012编译的程序在Windows XP下无法运行,据说是VS2012加入了XP无法识别的头信息。
3. 定义符合Prism属性格式的Code Snippet。from 《深入浅出WPF》系列视频(特辑)——MVVM入门与提高(难度300+)
VS2010菜单下:工具->代码段管理器->Visual C#下拉菜单->Visual C#选项->propfull
在“位置”所示路径下找到“propfull.snippet”所在文件夹,新建文件“propn.snippet”,粘贴如下代码
1 <?xml version="1.0" encoding="utf-8"?> 2 <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 3 <CodeSnippet Format="1.0.0"> 4 <Header> 5 <Title>propn</Title> 6 <Shortcut>propn</Shortcut> 7 <Description>属性和支持字段的代码段 For Prism</Description> 8 <Author>Microsoft Corporation</Author> 9 <SnippetTypes> 10 <SnippetType>Expansion</SnippetType> 11 </SnippetTypes> 12 </Header> 13 <Snippet> 14 <Declarations> 15 <Literal> 16 <ID>type</ID> 17 <ToolTip>属性类型</ToolTip> 18 <Default>int</Default> 19 </Literal> 20 <Literal> 21 <ID>property</ID> 22 <ToolTip>属性名</ToolTip> 23 <Default>MyProperty</Default> 24 </Literal> 25 <Literal> 26 <ID>field</ID> 27 <ToolTip>支持此属性的变量</ToolTip> 28 <Default>myVar</Default> 29 </Literal> 30 </Declarations> 31 <Code Language="csharp"><![CDATA[private $type$ $field$; 32 33 public $type$ $property$ 34 { 35 get { return $field$;} 36 set 37 { 38 $field$ = value; 39 RaisePropertyChanged("$property$"); 40 } 41 } 42 $end$]]> 43 </Code> 44 </Snippet> 45 </CodeSnippet> 46 </CodeSnippets>
于是能看到:
于是项目中可以使用“propn" 字符串输出代码段了。
End,告别了MFC时代,跳过了Winform,对有WEB开发经验的人来说WPF暴爽,此贴就用来记录新机配置环境时的个人设置习惯吧。