zoukankan      html  css  js  c++  java
  • 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://www.galasoft.ch/mvvm/

    安装地址

    http://www.galasoft.ch/mvvm/installing/

    目前正式版本是V3.0

    二。新建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名字就可以

  • 相关阅读:
    C# 7.2 通过 in 和 readonly struct 减少方法值复制提高性能
    .net remoting 使用事件
    .net remoting 使用事件
    WPF 使用 SharpDX 在 D3DImage 显示
    PHP readlink() 函数
    PHP readfile() 函数
    PHP popen() 函数
    PHP pclose() 函数
    PHP pathinfo() 函数
    latin1字符集的数据转换为utf8字符集
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2479528.html
Copyright © 2011-2022 走看看