//定义接口
     public interface IView
     {
         bool IsChanged { get; set; }

         void SetBinding();
         void Clear();
     }

     //定义命令
     public class ClearCommand : ICommand
     {
         public event EventHandler CanExecuteChanged;

         public bool CanExecute(object parameter)
         {
             throw new NotImplementedException();
         }

         public void Execute(object parameter)
         {
             IView view = parameter as IView;
             if (view != null)
             {
                 view.Clear();
             }
         }
     }

     //自定义 命令源
     public class MyCommandSource : UserControl, ICommandSource
     {
         public ICommand Command
         {
             get; set;
         }

         public object CommandParameter
         {
             get; set;
         }

         public IInputElement CommandTarget
         {
             get; set;
         }

         //组件的连带执行命令, 可自定义
         protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
         {
             base.OnMouseLeftButtonDown(e);
             //命令作用在目标上
             if (this.CommandTarget != null)
             {
                 this.Command.Execute(this.CommandTarget);
             }
         }
     }

     /// <summary>
     /// UCView.xaml 的交互逻辑
     /// </summary>
     public partial class UCView : UserControl,IView
     {
         public UCView()
         {
             InitializeComponent();
         }

         public bool IsChanged
         {
             get; set;
         }

         public void Clear()
         {
             this.textBox1.Clear();
             this.textBox2.Clear();
         }

         public void SetBinding()
         {
             throw new NotImplementedException();
         }
     }

 <Window>
     <Grid>
         <StackPanel>
             <local:MyCommandSource x:Name="srcClear">
                 <!--添加命令源 内容控件-->
                 <TextBlock Text="></TextBlock>
             </local:MyCommandSource>
             <local:UCView x:Name="ucView"></local:UCView>
         </StackPanel>
     </Grid>
 </Window>    

         private void Window_Loaded(object sender, RoutedEventArgs e)
         {
             //创建命令
             ClearCommand clearcmd = new ClearCommand();
             //命令源设置命令
             srcClear.Command = clearcmd;
             //命令源 设置 目标
             srcClear.CommandTarget = ucView;
         }

同名的命令用 参数来区分

WPF Command命令模式的更多相关文章

  1. C++设计模式-Command命令模式

    Command命令模式作用:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 由于“行为请求者”与“行为实现者”的紧耦合,使用命令模式 ...

  2. 设计模式14:Command 命令模式(行为型模式)

    Command 命令模式(行为型模式) 耦合与变化 耦合是软件不能抵御变化的根本性原因.不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系. 动机(Motivation) 在 ...

  3. 22、Command 命令模式

    1.command 命令模式 命令模式(Command Pattern):在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指 ...

  4. Command 命令模式

    简介 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化.用于[行为请求者]与[行为实现者]解耦,可实现二者之间的松耦合,以便适应变化. 将一个请求封装为一个对象,从而使你可用不同 ...

  5. 设计模式(十四):Command命令模式 -- 行为型模式

    1.概述         在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来 ...

  6. 二十二、Command 命令模式

    原理: 时序图: 代码清单: command.Command public interface Command { void execute(); } command.MacroCommand pub ...

  7. 设计模式C++学习笔记之十二(Command命令模式)

      命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作.应该是一个比较简单的模式了. 12.1.解释 main(),客户 CIn ...

  8. 设计模式(14)--Command(命令模式)--行为型

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.模式定义:   命令模式属于对象的行为模式.命令模式又称为行动(Action)模式或交易(Transactio ...

  9. Command 命令模式 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. wildfly9 配置SSL单向认证/https

    D:\>keytool -genkey -keystore cdi-init.keystore -alias cdi-init -keyalg RSA -keysize 2048 -validi ...

  2. JavaScript里的类和继承

    JavaScript与大部分客户端语言有几点明显的不同: JS是 动态解释性语言,没有编译过程,它在程序运行过程中被逐行解释执行JS是 弱类型语言,它的变量没有严格类型限制JS是面向对象语言,但 没有 ...

  3. Sending data to USB printer in C#?

    using System; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Run ...

  4. BrnShop开源网上商城第三讲:插件的工作机制

    这几天BrnShop的开发工作比较多,所以这一篇文章来的晚了一些,还请大家见谅呀!还有通知大家一下BrnShop1.0.312版本已经发布,此版本添加了报表统计等新功能,需要源码的园友可以点此下载.好 ...

  5. 在DDMS中查看网络使用详情

    在Android 4.0设置中的“流量使用情况”允许长期统计每个App如何使用网络资源.从4.0.3开始,配合最新发布的DDMS r17(在ADT r17 插件中有集成),您可以实时的在DDMS中查看 ...

  6. openlayer调用geoserver发布的地图实现地图的基本功能

    转自:http://starting.iteye.com/blog/1039809 主要实现的功能有放大,缩小,获取地图大小,平移,线路测量,面积测量,拉宽功能,显示标注,移除标注,画多边形获取经纬度 ...

  7. LightOJ 1259 Goldbach`s Conjecture 水题

    不想说了 #include <cstdio> #include <iostream> #include <ctime> #include <vector> ...

  8. nyoj 904 hashmap

    这个题目是个水题目,现在我只管做出来,效率不考虑了. 题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=904 我用hashmap 很爽,很 ...

  9. N个数的数组求N-1个数组合乘积最大的一组

    /* 编程之美题,给定N个数的数组,只能使用乘法,不使用除法,找出N-1个数的乘积最大的一组,有两种方法,方法一:采用两个数组分别保存从左向右 和从又向左的两个乘积值,然后在扫描一次,求出最大乘积,空 ...

  10. linux多线程大神博客网址

    http://blog.csdn.net/zjf280441589/article/details/43883055