理解Prism中MVVM的Command与CommandParameter

内容摘要

接上一讲(http://www.cnblogs.com/chenxizhang/archive/2012/04/13/2446415.html),这一讲中我使用Prism做了演示和比较。Prism不仅仅是一个MVVM框架,它还包含其他的模块。在MVVM这个层面,Prism有些特殊性(Command绑定有特殊语法),这也是我这一讲的主要内容。

 

Prism的下载链接

http://compositewpf.codeplex.com/

 

视频地址

http://www.tudou.com/programs/view/72Ag1kQt1RA/

 

示例代码

<Window x:Class="WPFPrismMvvm.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow"

        Height="350"

        xmlns:local="clr-namespace:WPFPrismMvvm"

        xmlns:cmd="clr-namespace:Microsoft.Practices.Prism.Commands;assembly=Microsoft.Practices.Prism"

        Width="525">

    <Window.DataContext>

        <local:MainWindowViewModel UserName="chenxizhang"></local:MainWindowViewModel>

    </Window.DataContext>

    <Grid>



        <StackPanel>



            <TextBox Text="{Binding UserName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>



            <Button Content="Show"

                    cmd:Click.Command="{Binding ShowCommand}"

                    cmd:Click.CommandParameter="{Binding UserName}"></Button>

        </StackPanel>

    </Grid>

</Window>

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



using Microsoft.Practices.Prism.ViewModel;

using Microsoft.Practices.Prism.Commands;

using System.Windows.Input;

using System.Windows;



namespace WPFPrismMvvm

{

    public class MainWindowViewModel:NotificationObject

    {



        private string _UserName;

        public string UserName

        {

            get { return _UserName; }

            set

            {

                if (_UserName != value)

                {

                    _UserName = value;

                    RaisePropertyChanged("UserName");

                }

            }

        }







        public ICommand ShowCommand

        {

            get

            {

                return new DelegateCommand<string>(

                    (user) =>

                    {

                        MessageBox.Show(user);

                    }, (user) => {

                        return !string.IsNullOrEmpty(user);

                    });



            }

        }

    }

}

你可能感兴趣的:(parameter)