前面的博文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文件夹里)如下:
其目录结构如下:
关于纯Prism框架的具体,请参考DebugLZQ后面的博文:
Prism框架-Hello Prism Using Unity
老鸟绕过,轻拍~希望对你有帮助~