• 理解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);
                        });
    
                }
            }
        }
    }
    
  • 相关阅读:
    POJ 2506 Tiling
    POJ 2586 Y2K Accounting Bug
    POJ 2965 The Pilots Brothers' refrigerator (DFS)
    POJ 2499 Binary Tree
    POJ 3006 Dirichlet's Theorem on Arithmetic Progressions (素数)
    beautifulsoup 基本语法 含class属性查找小技巧class_
    xlrd库的使用
    pytest框架 里 fixture 参数化的方法
    ddt数据驱动
    mac电脑 pip安装包后 撞到了系统python里面的解决方法
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/2446782.html
Copyright © 2020-2023  润新知