RoutedUICommand,CommandBindings,InputBindings,ICommand接口的概念及快捷键或鼠标触发Command命令
创始人
2025-05-29 17:09:26
0

如题,这篇贴子来简单介绍一下这4个知识点。
1、RoutedUICommand 类
官方解释:定义一个在元素树中路由并包含一个文本属性的 ICommand。我们看看它的继承路线:
ICommand -> RoutedCommand -> RoutedUICommand,也就是说,本质上,它就是ICommand接口的子类实现。如要在XAML中使用它,如下进行实例化。




2.CommandBindings集合
定义好了RoutedUICommand 的实例后,还需要写这个命令的执行代码,于是CommandBindings就出场了。CommandBindings是一个集合,位于window对象中,这个集合中存储了RoutedUICommand的执行代码的实现,也就是每个具体的CommandBinding对象,CommandBinding对象在实例化时需要三个参数,即command命令的实例对象,Executed执行委托和CanExecute判断委托。说白了,CommandBinding就是一个中间商,它生下来就是为RoutedUICommand服务的,它指明了RoutedUICommand要执行的代码,当然这些代码就是程序员去实现了,所以定义(实例化)CommandBinding的实例就要分为两步,第一步在xaml中实例化,第二步实现Executed委托和CanExecute委托
2.1 实例化CommandBinding




2.2实现Executed委托和CanExecute委托
上面引用了CommandBinding_Executed函数和CommandBinding_CanExecute函数,所以要在后端写上这两个函数的回调,这样,将来OpenCommand被执行的时候,才会真正的去执行CommandBinding_Executed函数里面的代码

private void CommandBinding_Executed(object sender,ExecutedRoutedEventArgs e){MessageBox.Show("我是ALT+S");
}
private void CommandBinding_Executed(object sender,CanExecuteRoutedEventArgs e){e.CanExecute = true;
}

3、InputBindings类
可以看到这个InputBindings以s结尾,说明它是一个集合,位于window这个类型中。它的元素都是InputBinding类,例如KeyBinding类型或MouseBinding,它们都继承于InputBinding类。

经过第1步和2步,也就是定义好了一个command和command的执行代码后,接下来就是要使用这个command,KeyBinding可以让用户通过快捷键去触发(或叫引用)这个command,而MouseBinding可以用鼠标的操作去触发这个command。








如此,按下ctrl键+鼠标滚轮或alt+s都可以触发OpenCommand命令,而最终的效果就是执行了CommandBinding_Executed回调函数,弹出MessageBox.Show(“我是ALT+S”);

相关内容

热门资讯

浙江夫妇带着99%控股的信胜科... 第五大供应商是公司关联方。作者|卓玛编辑|刘钦文只需要输入设计图案和换色程序,电脑刺绣机就能自动完成...
用友郭金铜:用友企业AI,让A... 当下,正值企业数智化转型的关键时期。 当 AI 浪潮涌入产业,除了底层的算力和模型竞赛,更庞大的需求...
滚动更新丨A股三大指数集体高开... 09:27 电网设备大幅高开,三变科技4连板,新联电子、保变电气2连板,平高电气涨停,亿能电力涨超2...
跑赢金价的内存,正在对标上海房... 说来抽象,但现阶段“一盒内存堪比上海一套房” “囤内存比囤黄金还赚钱”的本质,就是因为有人想把“不存...
特斯拉将美国Model X A... 6月13日消息,特斯拉将美国Model X AWD和PLAID车型价格上调5000美元。(官方公告)
“花式”揽储:有银行送鸡蛋吸引... 【导读】多家中小银行密集上调存款利率,各家银行为揽储开启“花式”营销中国基金报记者 马嘉昕近日,不少...
从笔尖到镜头:网文IP穿越短剧... 作者 | 吴姿过去二十年,支撑网文作者生存的是以字数换取“全勤”和“订阅”的工业模式。但在流量红利见...
收购嘉美包装,只是追觅科技百万... 追觅科技CEO俞浩在朋友圈发布“逆天”言论:追觅生态将成为人类历史上第一个百万亿美金的公司生态!他强...