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

 

老鳥繞過,輕拍~希望對你有幫助~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM