zoukankan      html  css  js  c++  java
  • 使用Prism框架提供的类简化Hello MVVM

    前面的博文My First MVVM Demo,DebugLZQ用MVVM实现了一个简单的Demo。本文旨在使用Prism提供的一些现有类,来简化前面Hello MVVM。

    关于Prism的安装,可以参考DebugLZQ前面的博文Prepare for Prism

    为了使用Prism框架提供的DelegateCommand、NotificationObject需要添加Prism的引用,参考前面的博文。

    实现MainWindowViewModel类如下:

    using System;
    using Microsoft.Practices.Prism.ViewModel;//
    using Microsoft.Practices.Prism.Commands;//
    
    namespace MVVMPro1Prism.ViewModels
    {
        class MainWindowViewModel : NotificationObject
        {
            //MainWindow有2个输入,1个输出,对应3个“数据属性”
            private string input1;
            public string Input1
            {
                get { return input1; }
                set
                {
                    input1 = value;
                    RaisePropertyChanged("Input1");
                }
            }
            private string input2;
            public string Input2
            {
                get { return input2; }
                set
                {
                    input2 = value;
                    RaisePropertyChanged("Input2");
                }
            }
            private string output1;
            public string Output1
            {
                get { return output1; }
                set
                {
                    output1 = value;
                    RaisePropertyChanged("Output1");
                }
            }
            //一个Button,一共一个“命令属性”
            public DelegateCommand AddCommand { get; set; }
            private void Add()
            {
                Output1 = Input1 + Input2;
            }
            //Ctor中进行关联
            public MainWindowViewModel()
            {           
                AddCommand = new DelegateCommand(new Action(Add));
            }
        }
    }

    注意Prism框架提供的方法的的使用方法!!(key point!)

    在View中添加Binding(和前面的一样):

    <Window x:Class="MVVMPro1Prism.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <TextBox Grid.Row="0" FontSize="26" Text="{Binding Input1}"/>
            <TextBox Grid.Row="1" FontSize="26" Text="{Binding Input2}"/>
            <TextBox Grid.Row="2" FontSize="26" Text="{Binding Output1}"/>
            <Button  Grid.Row="3" Content="Add" Command="{Binding AddCommand}"  />
        </Grid>
    </Window>
    using System.Windows;
    using MVVMPro1Prism.ViewModels;
    
    namespace MVVMPro1Prism
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                //
                this.DataContext = new MainWindowViewModel();
            }
        }
    }

    OK,完成了Run run看:

    程序正常运行,Prism框架提供的一些类为MVVM模式提供了便利!

    ------------------------------------------------------

    Prism是一个重量级的框架,本文利用Prism提供的DelegateCommand、NotificationObject,简化MVVM编写。

    Prism提供的Hello World Demo(黄色矩形框,工程文件在Quickstarts文件夹里)如下:

    其目录结构如下:

    Download

    关于纯Prism框架的具体,请参考DebugLZQ后面的博文:

    Prism框架-Hello Prism Using Unity

    Prism框架-Hello Prism Using MEF

    老鸟绕过,轻拍~希望对你有帮助~

  • 相关阅读:
    为图片指定区域添加链接
    数值取值范围问题
    【leetcode】柱状图中最大的矩形(第二遍)
    【leetcode 33】搜索旋转排序数组(第二遍)
    【Educational Codeforces Round 81 (Rated for Div. 2) C】Obtain The String
    【Educational Codeforces Round 81 (Rated for Div. 2) B】Infinite Prefixes
    【Educational Codeforces Round 81 (Rated for Div. 2) A】Display The Number
    【Codeforces 716B】Complete the Word
    一个简陋的留言板
    HTML,CSS,JavaScript,AJAX,JSP,Servlet,JDBC,Structs,Spring,Hibernate,Xml等概念
  • 原文地址:https://www.cnblogs.com/DebugLZQ/p/2817857.html
Copyright © 2011-2022 走看看