加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何将命令绑定到本地事件?

发布时间:2020-12-16 02:00:49 所属栏目:百科 来源:网络整理
导读:我有一个应该捕获KeyDown / KeyUp事件的表单. 此代码因NRE而失败,因为它在我当前视图中查找KeyDown控件: this.BindCommand(ViewModel,vm = vm.KeyDown,"KeyDown"); 我所做的是创建了包装类,它具有作为属性的形式,所以我可以使用这个重载: this.BindCommand
我有一个应该捕获KeyDown / KeyUp事件的表单.

此代码因NRE而失败,因为它在我当前视图中查找KeyDown控件:

this.BindCommand(ViewModel,vm => vm.KeyDown,"KeyDown");

我所做的是创建了包装类,它具有作为属性的形式,所以我可以使用这个重载:

this.BindCommand(ViewModel,v => v.Form,"KeyDown");

虽然它有效但对我来说似乎是一个黑客攻击.有没有正确的方法来绑定本地事件?

解决方法

如果您正在使用BindCommand,这是正确的方法.如果你想摆脱字符串并且你正在使用ReactiveUI.Events,你也可以这样做:

this.Form.Events().KeyDown
    .InvokeCommand(this,x => x.ViewModel.KeyDown);

顺便说一句,“KeyDown”不是一个非常MVVM的命令.我写了你的密钥=> View层的命令映射,如下所示(通过TextArea编码,忽略语法错误):

this.Form.Events().KeyDown
    .Where(x => x.Key == Key.C && (x.Modifier & Modifier.Ctrl))
    .InvokeCommand(this,x => x.ViewModel.CopyText;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读