本章节,我将通过示例介绍如何搭建mvvmlight开发环境。示例中的我会针对wpf代码进行介绍,SL下有区别的地方我会注明,下载示例中会同时包含WPF和SL源代码,但是只会提供VS2010版本的示例程序。
前提条件:按照前一章节安装的模板和代码片段,或者下载 MVVM Light Toolkit V3
开发环境:VS2010/Blend4
为了方便大家了解框架结构,我将不使用mvvm项目模板,而是从空白项目开始创建mvvm light项目,下面将以两种使用mvmmlight框架的方式进行说明(以下示例针对WPF,SL操作步骤跟WPF基本一样,不做过多说明,大家可以在文章最后下载代码对照阅读):
1、在VS2010中,文件/新建/WPF/SilverLight应用程序项目,项目名称MvvmlightDataBinding.SL4/MvvmlightDataBinding.WPF4
2、添加mvvmlight引用,如果使用模板创建,会自动生成引用,而这里我们需要自己添加,这里我将MVVM Light Toolkit V3的源代码附到了示例中,因此,直接添加项目引用就可以了,如果要支持Blend的功能,还需要添加System.Windows.Interactivity.dll引用,如果安装了Blend,在.net引用列表中能找到,没有安装Blend,在示例中解决方案目录/Assemblies/galaSoft.MvvmLight/External中能找到,添加后引用列表如下:
3、在解决方案浏览器中,右键项目名称,添加新文件夹,文件夹名称为viewmodel
4、在解决方案浏览器中,右键项目名称,添加新文件夹,文件夹名称为View
5、为MainWindow添加viewmodel,在解决方案浏览器中,右键viewmodel文件夹,添加新类,类名称为Mainviewmodel,如果安装了mvvmlight模板,选择类模板为Mvvmviewmodel
- using galaSoft.MvvmLight;
- namespace MvvmlightDataBinding.WPF4.viewmodel
- {
- public class Mainviewmodel : viewmodelBase
- {
- /// <summary>
- /// Initializes a new instance of the Mainviewmodel class.
- /// </summary>
- public Mainviewmodel()
- {
- ////if (IsInDesignMode)
- ////{
- //// // Code runs in Blend --> create design time data.
- ////}
- ////else
- //// // Code runs "for real": Connect to service, etc...
- }
- override void Cleanup()
- // Clean own resources if needed
- base.Cleanup();
- }
- }
- }
代码很简单,我去掉了类注释,它是一个框架,继承自viewmodelBase,如果没装类模板,可以直接复制以上代码。
6、添加类viewmodelLocator,我们叫它viewmodel加载器,在解决方案浏览器中,右键项目名称,添加新类,类名称为viewmodelLocator,如果安装了mvvmlight模板,选择类模板为MvvmviewmodelLocator,自动创建的代码如下:
- {
- class viewmodelLocator
- /// Initializes a new instance of the viewmodelLocator class.
- public viewmodelLocator()
- ////if (viewmodelBase.IsInDesignModeStatic)
- //// // Create design time view models
- //// // Create run time view models
- /// <summary>
- /// Cleans up all the resources.
- /// </summary>
- static void Cleanup()
- {
- // Call ClearviewmodelName() for each viewmodel.
- }
- }