前面的博文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
老鳥繞過,輕拍~希望對你有幫助~