• 使用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

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

  • 相关阅读:
    C语言I博客作业04
    C语言II博客作业04
    C语言II作业03
    C语言II博客作业02
    C语言II博客作业01
    第一周C语言作业
    C语言I博客作业02
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
  • 原文地址:https://www.cnblogs.com/DebugLZQ/p/2817857.html
Copyright © 2020-2023  润新知