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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |