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

2024-01-22

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

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

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

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

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

虽然它有效,但对我来说似乎是一种黑客行为。有没有正确的方法来绑定本地事件?


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

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

顺便说一句,“KeyDown”并不是一个非常 MVVM 的命令。我会在视图层编写您的 key => 命令映射,如下所示(通过 TextArea 编码,忽略语法错误):

this.Form.Events().KeyDown
    .Where(x => x.Key == Key.C && (x.Modifier & Modifier.Ctrl))
    .InvokeCommand(this, x => x.ViewModel.CopyText;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将命令绑定到本地事件? 的相关文章

  • 有没有办法为向量采用内存资源?

    我已经开始在我的项目中使用 pmr allocators 并且我已经看到使用它们带来了很多性能提升和优势 我使用的分配器与我在下面的简单示例中展示的非常相似 include
  • .Net Core 中 String 默认不可序列化吗?

    我正在查看其他的 Fortify 静态分析安全测试 SAST 扫描报告 以识别和抑制误报 应用程序框架是C NET Core SAST 报告部分内容如下 Method1 在第 111 行将不可序列化的对象存储为 HttpSessionSta
  • 更改 Visual Studio 2015 扩展中项目内的文件 ProjectItem 的内容?

    如何更改文件的内容 ProjectItem在给定的范围内Project 我想用字符串替换它的所有内容 这个问题有解决办法吗 我想做一些改变ProjectItem CS 文件 通过使用 VSIX 包 以及我现在看到的唯一一种执行此操作的方法
  • 根据另一个列表的内容对列表进行排序

    我有一个包含整数列表的列表和另一个包含同时包含整数和字符串的类的列表 我想做的是按字母顺序对列表进行排序 将第一个列表中存在的条目放在前面 这是我的代码和预期输出 using System using System Collections
  • Rx Framework:在超时时执行操作,而不中断原始可观察序列

    给定一个可观察的源 通过轮询低级设备的 变化 状态生成 observable source metacode IObservable
  • 获取光标相对于控件的位置 - C#

    我想获取鼠标相对于鼠标指针所在控件的位置 这意味着当我将光标置于控件的起点 左上角 时 它应该给出 0 0 我正在使用以下代码 private void panel1 MouseMove object sender MouseEventAr
  • C# 动态 Linq 变量Where 子句

    我正在按照 Scott Gu 的文章创建动态 LINQhttp weblogs asp net scottgu archive 2008 01 07 dynamic linq part 1 using the linq dynamic qu
  • 模拟 EF core dbcontext 和 dbset

    我正在使用 ASP NET Core 2 2 EF Core 和 MOQ 当我运行测试时 我收到此错误 消息 System NotSupportedException 非虚拟 可在 VB 中重写 成员上的设置无效 x gt x Movies
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • 如何解决素数函数的大O表示法?

    我正在尝试理解 Big O 表示法 很抱歉 如果我问的问题太明显了 但我似乎无法理解这一点 我有以下 C 代码函数 我正在尝试为其计算 Big O 表示法 for i 2 i lt 100 i for j 2 j lt i j j if i
  • 在 C# 4.0 中,是否可以从泛型类型参数派生类?

    我一直在尝试这个 但我似乎无法弄清楚 我想做这个 public abstract class SingletonType
  • 如何在OpenGL中像这样绘制连接的带状线

    我想用以下方式绘制一系列连接线 GL LINE STRIP 我尝试过自己编写代码 但没有得到想要的结果 所以我来到这里 帮助我找出我错在哪里 这里我只给出我的draw 函数 glBegin GL LINE STRIP glVertex2f
  • 正则表达式基于组的不同替换?

    所以我对正则表达式比较陌生 并且做了一些练习 我正在玩一个简单的 混淆器 它只是寻找 dot or dot or at or at 不区分大小写 并且在匹配项之前或之后有或没有任意数量的空格 这是针对通常情况的 someemail AT d
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量
  • 访问 Visual Studio 扩展中的当前代码窗格

    我正在编写一个 Visual Studio 2010 扩展 在代码视图中带有右键单击菜单 我希望能够从菜单项事件处理程序检查当前代码 但无法在对象模型中找到执行此操作的位置 如何在 Visual Studio 扩展中访问当前窗口中的代码 E
  • 可选参数代码在 .NET 3.5 中编译。为什么?

    这段代码在 VS 2010 的框架 3 5 项目中编译正常 我三次检查过 public LoggingClient string uri net msmq localhost logging 为什么 我在 C 4 规范中没有看到任何内容 文
  • 任何浮点密集型代码是否会在任何基于 x86 的架构中产生位精确的结果?

    我想知道使用浮点运算的 C 或 C 代码是否会在任何基于 x86 的体系结构中产生位精确的结果 无论代码的复杂性如何 据我所知 自 Intel 8087 以来的任何 x86 架构都使用准备处理 IEEE 754 浮点数的 FPU 单元 并且
  • 为什么没有参数的函数(与实际函数定义相比)可以编译?

    我刚刚看到某人的 C 代码 我很困惑为什么要编译它 有两点我不明白 The 函数原型与实际函数定义相比没有参数 中的参数函数定义没有类型 include
  • MsBuild 在 Visual Studio Online 上找不到恢复的 NuGet 包

    我尝试构建一个存储在 Visual Studio Online 上的外部 GIT 存储库中的解决方案 它有以下步骤 1 Git 恢复 有效 2 NuGet 恢复 有效 3 构建 不起作用 查看日志时我的第一个猜测是 MsBuild 没有查找
  • 从哪里开始阅读 SQLite 源代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想了解sqlite是如何实现的 并且 想阅读源代码 我已经下载了源代码 我应该开始查看代码的哪一部分 SQLite文档页 http

随机推荐

  • bash“read -a”在空分隔字符串变量上循环

    我一直在阅读这篇文章 bash for in 在空分隔字符串变量上循环 https stackoverflow com questions 8677546 bash for in looping on null delimited stri
  • 单元测试cherpy web应用程序

    我最近不得不重写我们的 REST API 并从 Flask 切换到 Cherrypy 主要是由于 Python 3 兼容性 但现在我一直在尝试编写单元测试 Flask 有一个非常漂亮的内置测试客户端 您可以使用它向您的应用程序发送虚假请求
  • 未将对象引用设置为对象的实例 #5

    sUsername Trim sPassword Trim string ConnectionString WebConfigurationManager ConnectionStrings dbnameConnectionString C
  • 如何编写Delphi编译时函数

    Delphi 我可以自己写吗compile time functions对于 const 和 var 声明 在编译时可执行 标准 Delphi 库包含 Ord Chr Trunc Round High 等例程 用于常量初始化 我可以编写自己
  • 如何获取 Android 应用程序的 Google Places API 密钥

    在过去的 48 小时里 我绞尽脑汁试图找到这个问题的答案 问这个问题的人 如何为 Google Places api 制作 API KEY https stackoverflow com questions 23128152 how can
  • 通知的 PendingIntent 不要第二次调用我的活动

    我希望接收推送通知 c2dm 接收显示Notification 此通知以 PendingIntent 启动 这是一个显示弹出窗口的活动 单击 确定 按钮时 此弹出窗口将启动我的应用程序 这是在接收推送通知时执行的代码 private voi
  • Groovy list.sort 按第一个、第二个然后第三个元素

    我有一个很棒的列表 即 list 2 0 1 1 5 2 1 0 3 我想按第一个元素的顺序对其进行排序 然后是第二个元素 然后是第三个元素 Expected assert list 1 0 3 1 5 2 2 0 1 我开始于list l
  • gem 安装 memcached 失败

    关于做 gem install memcached 抛出以下错误 checking for pod2man usr bin pod2man configure line 22468 syntax error near unexpected
  • 转向 SVG 图标 - 如何将它们与代码分开?

    与字体图标相比 SVG 图标具有一些优势 它们可以缩放以适应可变大小的容器元素 并且理论上您可以更改各个路径的颜色 我还喜欢这样一个事实 我可以轻松地在 Inkscape 中制作它们 P 但是 如何在 CSS 文件中移动 SVG 以便可以在
  • 防止 go build 覆盖 go.mod 中的版本

    我有一个导入项目 foo 的 go 模块 foo 的最新标签显示 v1 4 当我做一个go build在我的项目中 它更新了 go mod 来表示 module github com myid mymod require github co
  • JasperReports 中的 PAGE_COUNT 未正确呈现...?

    我已经添加了页脚第 x 页 共 y 页 我的报告 但 PAGE COUNT 似乎不起作用 也许出现这个问题是因为我有很多子报表 I get Page 1 of 1 Page 2 of 0 Page 3 of 0 Page 4 of 0 有任
  • MySQL:两个时间戳之间的差异(以秒为单位)?

    是否可以计算MySQL中两个时间戳之间的差异并以秒为单位获得输出结果 Like 2010 11 29 13 16 55 2010 11 29 13 13 55应该给 180 秒 谢谢 我不认为接受的答案是一个好的通用解决方案 这是因为 UN
  • javascript中的尾部函数[重复]

    这个问题在这里已经有答案了 我想创建一个添加参数的函数 调用这个函数应该是 functionAdd 2 3 4 n 结果 2 3 4 n 我正在尝试这个 function myfunction num var summ num if num
  • 如何将代码从旧版本的xcode转移到最新版本?

    我有一个xcode我不久前制作的一个应用程序的项目 但它已经启动xcode 3 2 如何轻松地将项目转移到较新版本的xcode 我尝试手动将项目的每个文件传输到新版本 但不是很成功 有没有更简单 更自动化的方法来做到这一点 编辑 从 xco
  • 为什么函数 apply 会抱怨长列表?

    作为一些欧拉阵痛 http projecteuler net 我正在尝试编写一个埃拉托斯特尼筛法 https en wikipedia org wiki Sieve of Eratosthenes带有因式分解轮 到目前为止我的代码是 def
  • 如何从 Java servlet Web 容器正确实现 RabbitMQ RPC?

    我希望传入的 Java servlet Web 请求使用 RPC 方法调用 RabbitMQ 如上所述here http www rabbitmq com tutorials tutorial six java html 但是 我不确定如何
  • 使用 javascript/html 控制 iframe 内容

    在我的网页中 我有一个像这样的 iframe iframe 是同一网站上的页面 我的问题是 是否可以在具有 iframe 的页面上使用 javascript 来控制 thispage html 例如使用 javascript 函数 是的你可
  • 在 Meteor 移动应用程序 (cordova) 上登录 Facebook?

    我正在寻找使用 Meteor Cordova 构建移动应用程序 首先希望 Facebook 登录能够正常工作 显然默认的 account facebook 包不起作用 所以我环顾了一下气氛 只找到了 article4dev cordova
  • AWS代码构建列出其他帐户的s3存储桶

    I have my codebuild build sitting on Account A and s3 buckets on Account B I tried to set up a trusted IAM STS role on A
  • 如何将命令绑定到本地事件?

    我有一个应该捕获 KeyDown KeyUp 事件的表单 此代码在 NRE 中失败 因为它在我当前的视图上查找 KeyDown 控件 this BindCommand ViewModel vm gt vm KeyDown KeyDown 我