gpt4 book ai didi

c# - 如何将命令绑定(bind)到本地事件?

转载 作者:行者123 更新时间:2023-11-30 14:10:43 26 4
gpt4 key购买 nike

我有一个应该捕获 KeyDown/KeyUp 事件的表单。

这段代码因 NRE 而失败,因为它在我当前的 View 上寻找 KeyDown 控件:

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

我所做的是创建具有 form 作为属性的包装类,因此我可以使用此重载:

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

虽然它有效,但对我来说似乎是一种黑客攻击。是否有适当的方法来绑定(bind)到本地事件?

最佳答案

如果您使用的是 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;

关于c# - 如何将命令绑定(bind)到本地事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22485360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com