WPF中ICommand接口 的一个设计问题

 public interface ICommand
    {
        // Summary:
        //     Occurs when changes occur that affect whether or not the command should execute.
        event EventHandler CanExecuteChanged;
        bool CanExecute(object parameter);
        void Execute(object parameter);
    }
 
    //     Defines an object that knows how to invoke a command.
    public interface ICommandSource
    {
        // Summary:
        //     Gets the command that will be executed when the command source is invoked.
        ICommand Command { get; }
        object CommandParameter { get; }
        IInputElement CommandTarget { get; }
    }
   MSDN:
Normally, a command source will listen to the CanExecuteChanged event on the command. This informs the command source when conditions change on the command target, such as loss of keyboard focus. The command source can then query the command using the CanExecute method.
 

    按照MSDN中的解释,当CanExecuteChanged事件发生时,ICommandSource会调用ICommand的CanExecute方法来检测是否可以执行命令。如果是这样,这里的这个事件名取为:类似“CanExecuteConditionChanged”不是更好吗?

    因为CanExecuteChanged发生,使用者的第一感觉就是CanExecute从false变到true或者由true变到false了。

    关于这个设计问题,我想不出原因,所以希望高人解释下。:)

 

    另外,还有一个小问题,MSDN中说到:

In the Windows Presentation Foundation (WPF) commanding system, the CommandTarget property on a ICommandSource is only applicable when the ICommand is a RoutedCommand. If the CommandTarget is set on a ICommandSource and the corresponding command is not a RoutedCommand, the command target is ignored.

    那么,设计这个属性会不会有点多余?虽然我觉得加上也是好的。

时间: 2024-11-02 14:13:03

WPF中ICommand接口 的一个设计问题的相关文章

wpf 中 chart饼图的一个小问题求指教

问题描述 我在wpf中用chart画了个饼图当其中数据源中只有一个值得时候饼图不能显示出来求指教 解决方案 解决方案二:没有大神吗难道解决方案三:求图,求代码,这个好像很简单的,我刚做,dotnetcharting做得解决方案四:web项目里面运用的解决方案五:利用饼图分析人力资源情况示例privatevoidCreateImage(){//连数据库SqlConnectionCon=newSqlConnection(ConfigurationManager.AppSettings["ConSql

WPF中 我自定义了一个模板列用于存放datetime类型并定义好显示格式,但是无法获取值

问题描述 我在dategrid控件中自定义了模板,用于存放datetime类型的数据,并固定好其显示格式!<Pagexmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup

WPF中焦点的问题

问题描述 在WPF中用Popup来做窗口,但是在切换窗口的时候窗口不能失去焦点,所有的窗口都显示是得到了焦点,但焦点却在系统其他窗口之上比如我打开两个自己的窗口,当其中一个前端显示时,它调用了GotFocus,但另一个窗口并没有LostFocus...这有可能是什么原因造成的呢?望了解的人给予回答! 解决方案 解决方案二:该回复于2008-07-02 09:12:13被版主删除解决方案三:在WPF中,PopupControl是一个不可见的Block,它的PopupRoot才是在你的屏幕内显现的P

hadoop中InputFormat 接口的设计与实现

InputFormat 主要用于描述输入数据的格式, 它提供以下两个功能. 数据切分:按照某个策略将输入数据切分成若干个 split, 以便确定 Map Task 个数以及对应的 split. 为 Mapper 提供输入数据: 给定某个 split, 能将其解析成一个个 key/value 对. 本文将介绍 Hadoop 如何设计 InputFormat 接口,以及提供了哪些常用的 InputFormat实现. 1 .旧版 API 的 InputFormat 解析 如图所示: 在旧版 API 中

接口-移动应用中 服务端API的设计

问题描述 移动应用中 服务端API的设计 php作为服务端 Android ,苹果 作为客户端,php 提供API接口的时候 应该怎么设计才能解决新旧版本 及 安卓 和 苹果版本不一致的问题,2. 怎么设计接口才能保证功能的可扩展性 和 灵活性 求教大家 能否给一个完整的例子 或者 说说思路也可以 解决方案 API中带一个版本信息http://www.xxx.com/api/v1.0http://www.xxx.com/api/v2.0 区分android和ios,可以在api中带一个os参数来

hadoop中OutputFormat 接口的设计与实现

OutputFormat 主要用于描述输出数据的格式,它能够将用户提供的 key/value 对写入特定格式的文件中. 本文将介绍 Hadoop 如何设计 OutputFormat 接口 , 以及一些常用的OutputFormat 实现. 1.旧版 API 的 OutputFormat 解析 如图所示, 在旧版 API 中,OutputFormat 是一个接口,它包含两个方法: RecordWriter<K, V> getRecordWriter(FileSystem ignored, Job

C#WPF中怎样在一个窗口中textBox中输入的内容显示在另一个窗口中的textBox中

问题描述 C#WPF中怎样在一个窗口中textBox中输入的内容显示在另一个窗口中的textBox中 C#wpf中怎样在一个窗口中textBox中输入的内容显示在另一个窗口中的textBox中 解决方案 你是要同时显示么?还是在一个窗口的Textbox中输完打开另一个界面显示你输入的值 解决方案二: 同时显示,假设一个textbox放在上面,两一个放在它的下面,在上面的textbox输入"+",下面的textbox自动也输入"+"

C#中说接口是让一个类有两个或两个以上基础类的唯一方法,这句话怎么解释,谢谢!

问题描述 C#中说接口是让一个类有两个或两个以上基础类的唯一方法,这句话怎么解释,谢谢!帮忙举个例子,谢谢! 解决方案 解决方案二:publicinterfaceI1{voidGetX();}publicinterfaceI2{voidGetY();}publicclassclass1:I1,I2{publicvoidGetX(){}publicvoidGetY(){}}解决方案三:我明白楼上说的意思但这种情况,并没有实现一个类有两个或两个以上基础类的情况呀?帮忙指教,谢谢解决方案四:I1,I2

WPF 中怎么把一个Window类 转变为TabControl 的选项卡

问题描述 WPF中怎么把一个Window类转变为TabControl的选项卡转变成TabItem类 解决方案 解决方案二:就是把一个exe程序变为Tabcontrol的选项卡解决方案三:wpf如何把窗体设为顶级窗体'Window必须是树的根目录.不能将Window添加为Visual的子目录.'TransactionWindowwinTrans=newTransactionWindow();winTrans.Topmost=false;winTrans.WindowStyle=WindowStyl