C# 从ViewModel读取键盘输入

C# 从ViewModel读取键盘输入,c#,wpf,mvvm,unity-container,prism,C#,Wpf,Mvvm,Unity Container,Prism,我将MVVM模式与WPF和Prism(unity)一起使用。我有一个工具,可以读取用户扫描的条形码,根据扫描的条形码类型,该工具可以执行一些操作。现在我有一个绑定到属性的文本框。我想在viewmodel中用扫描条形码的内容填充我的属性,而不使用文本框或类似工具。我想直接入住这家酒店。有办法做到这一点吗?或者有人知道我该如何解决这个问题 亲切问候根据您的评论,您要做的是处理keydown事件 请在此阅读:。他做了你想做的事,并展示了该做什么/在哪里处理:) 编辑: 我已经回答了另一个可能相关的关键

我将MVVM模式与WPF和Prism(unity)一起使用。我有一个工具,可以读取用户扫描的条形码,根据扫描的条形码类型,该工具可以执行一些操作。现在我有一个绑定到属性的文本框。我想在viewmodel中用扫描条形码的内容填充我的属性,而不使用文本框或类似工具。我想直接入住这家酒店。有办法做到这一点吗?或者有人知道我该如何解决这个问题


亲切问候

根据您的评论,您要做的是处理keydown事件

请在此阅读:。他做了你想做的事,并展示了该做什么/在哪里处理:)

编辑:
我已经回答了另一个可能相关的关键问题。请随意看一看,它讨论了
i:interaction
InputBindings
,并指出了另一篇关于处理关键事件的文章,还讨论了代码隐藏/mvvm方法


希望您会发现它们很有用。

嗯,我不确定是否正确,但您可以使用EventManager捕获所有键盘输入

EventManager.RegisterClassHandler(typeof(Window),
     Keyboard.KeyUpEvent,new KeyEventHandler(keyUp), true);


private void keyUp(object sender, KeyEventArgs e)
{
      if(e.Key == Key.OemComma)
             MessageBox.Show("Gotcha");
}

另一个选择是创建一个只读文本框,但它与您现在的文本框大致相同。

不确定您真正想要的是什么。。。你是说,不是手动的,还是不在文本框中?还是别的什么?没错。我的意思是,当我扫描一个条形码时(它和通常的键盘输入一样),我想将条形码的内容直接保存到属性中,而不是保存到绑定到属性的文本框中。。。您可能需要有一个事件侦听器,并从那里开始执行。我没有使用过扫描仪,所以不能肯定地告诉你。扫描仪实际上和键盘是一样的。只是普通的键盘输入来自iti我想他想避开文本框,直接进入模型,而不需要文本框绑定谢谢Noctis。我会看一看,我还需要找出如何将他的逻辑转换为mvvm:)不确定他想要什么,但mvvm注释可能意味着他不想要代码隐藏…你可以在应用程序域级别上执行,也可以将其提取到附加属性中。