【问题标题】:How to trigger same event on every page of the WPF App using MVVM Light如何使用 MVVM Light 在 WPF 应用程序的每个页面上触发相同的事件
【发布时间】:2016-04-28 13:44:33
【问题描述】:

我们的应用程序是使用 MVVM Light 在 WPF 中实现的。

我们正在用 USB HID-KB 替换目前是串行读卡器的旧磁卡读卡器。 串口读卡器很容易,因为我们有串口事件来触发传入的消息,我们在处理这些时没有问题。但是对于 USB 读卡器,事件是普通键盘的事件。顺便说一句,读卡器没有供应商特定的 API,这是一个通用的 USB 设备。

到目前为止,解决方案是在视图中捕获 keydownevent 并处理视图模型上的业务逻辑。

但这里的问题是最终用户可以刷卡,而不管他/她在什么页面上。我们应该能够捕获该滑动事件。我目前唯一的选择是我需要在上面提到的每个视图上连接这个 keydownevent。

在 MVVMLight 或 WPF 中是否有任何方法可以在全局级别声明事件,可以从每个视图触发。

任何指针将不胜感激。

谢谢,

【问题讨论】:

    标签: c# wpf mvvm-light


    【解决方案1】:

    解决方案非常简单。 你为什么不在一个通用文件中处理事件,比如基本文件。通常,我们在此类始终处于活动状态的基本文件中处理应用程序关闭事件。问题是我有一些条件要在应用程序关闭时检查。所以我在公共基础文件中处理事件并在那里进行条件检查。

    请尝试一下,然后告诉我结果..

    【讨论】:

    • 感谢您的回复,但这里的问题不在于处理程序,我已经在 viewmodelbase 类中添加了它,我需要一种添加事件的方法。我目前知道的唯一方法是在每个视图中添加它。
    • 为什么要在每个视图中处理?您是否必须在当前视图中显示数据。我是说如果你在主 xaml.cs 文件中处理它。即包含其他视图的主视图文件,无论视图如何,您都可以在一个地方获取事件。
    • 我们没有包含所有其他视图的主视图,每个视图都是独立的。
    • 那你不能全局做。否则,每个视图中都应该有一个通用控件,例如标题或其他内容。如果有这样的事情,那么您可以在该类中处理该事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2011-12-24
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多