好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MVVM开发模式MVVM Light Toolkit

MVVM开发模式MVVM Light Toolkit

MVVM模式就不细说了

个人理解

M是Model,是业务实体model,包含了数据的存取访问

V是View,是页面,是展示,是数据的显示,应该是单纯的xaml代码

VM是ViewModel,他应该是View上数据,方法,事件的抽象集合,是沟通Model和View的桥梁

一。 MVVM Light Toolkit安装

目前GalaSoft的 MVVM Light Toolkit这个插件在mvvm开发方面应用比较广泛

http://HdhCmsTestgalasoft.ch/mvvm/

安装地址

http://HdhCmsTestgalasoft.ch/mvvm/installing/

二。新建mvvm项目

下载安装以后,vs2010,就自动安装了mvvm的项目模板,在window phone项目下面就可以找到适用于window phone开发的mvv项目模板

新建项目以后,mvvm基本架构就全部已经在项目中包含了

有Model文件夹,viewmodel文件夹,xaml就是View

有几个文件和代码段要注意。

ViewModelLocator这是一个核心类, 这个类返回实例化的ViewModel到View。

 //  返回MainViewMode实例  
 public   MainViewModel Main
        {
              get  
            {

                  return   MainStatic;
            }
        } 

Loator的定义在App.xaml中,在app.xaml中声明可以全局使用

     <vm:ViewModelLocator x:Key="Locator"
                             d:IsDataSource="True" />
    </Application.Resources>

在MainPage.xaml文件中有几个显示文字title的地方

 <  StackPanel   x:Name  ="TitlePanel"  
                    Grid.Row  ="0"  
                    Margin  ="24,24,0,12"  > 
             <  TextBlock   x:Name  ="ApplicationTitle"  
                       Text  ="  {Binding ApplicationTitle}  "  
                       Style  ="  {StaticResource PhoneTextNormalStyle}  "   /> 
             <  TextBlock   x:Name  ="PageTitle"  
                       Text  ="  {Binding PageName}  "  
                       Margin  ="-3,-8,0,0"  
                       Style  ="  {StaticResource PhoneTextTitle1Style}  "   /> 
         </  StackPanel  > 

其中Bindind中 ApplicationTitle,PageName都是ViewModel 文件夹中MainViewModel中的属性

MainViewModel 和MainPage.xaml是通过这个代码段绑定到一起的。

在MainPage.xaml的根元素上声明

 DataContext="{Binding Main, Source={StaticResource Locator}}

三。新建页面

参照MainPage页面,新建页面的时候也是新建一个ViewModel,一个View.xaml,并且在ViewModelLocator.cs中多注册一个返回View的属性方法绑定到xaml中就可以

新建viewmodel和view的时候也会看到mvvm安装后产生的新模板,可以直接使用

ublic  class   MvvmViewModel1 : ViewModelBase
    {
          ///   <summary> 
         ///   Initializes a new instance of the MvvmViewModel1 class.
          ///   </summary> 
         public   MvvmViewModel1()
        {
              ///  /if (IsInDesignMode)
              ///  /{
              ///  /    // Code runs in Blend --> create design time data.
              ///  /}
              ///  /else
              ///  /{
              ///  /    // Code runs "for real": Connect to service, etc...
              ///  /} 
         }

          public   string   Hello
        {
              get  
            {
                  return   "  Hello World!~  "  ;
            }
        }

          ///  /public override void Cleanup()
          ///  /{
          ///  /    // Clean own resources if needed

          ///  /    base.Cleanup();
          ///  /} 
    }

在ViewModelLocator.cs中注册这个viewmodel

可以参考模仿原来的Main的属性

或者直接使用代码段Code Snippets

安装过mvvm后在安装的文件夹位置可以找到代码段,在vs的工具中--代码段管理器,导入这些

然后在 拼写  mvvmlocatorproperty  的时候就可以看到自动生成的属性,然后把属性名字改成正确的viewmodel名字就可以

分类:  移动开发(WP,andriod)

作者: Leo_wl

    

出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于MVVM开发模式MVVM Light Toolkit的详细内容...

  阅读:53次