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

 

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

posted @ 2012-12-14 22:31  DebugLZQ  阅读(3223)  评论(7编辑  收藏  举报