到目前为止,我对我的应用程序从无处不在的典型点击事件处理程序到完成 GUI 解耦的过渡方式感到非常满意。现在我遇到了一些我无法弄清楚的事情,它与我希望我的 GUI 弹出的窗口有关,它需要显示来自模型的信息。
我想我的问题的简短版本是,在 MVVM 中是否绝对禁止允许模型引用 ViewModel?这是我的场景:我有一组 LED 可以非常快速地循环通过 RGB 值。我希望我的 GUI 中的一个窗口通过与 ViewModel 的数据绑定来显示更新的颜色。我让 Window + UserControl 在测试应用程序中与模型 ViewModel 一起正常工作,但现在我必须将此 Window 放入我的真实应用程序中。
我正在运行的特定模式模拟硬件正在做什么。当我命令模型循环显示颜色时,它会启动一个线程来更改必要的类成员变量的值。
我当前的 MVVM 实现基本上是一直在轮询。为了让其他 LED 在其他地方更新,我运行了一个线程,该线程调用 ViewModel 中的一个函数。这会更新属性,因此 GUI 会自动更新,因为我正在使用数据绑定。我的 LED 示例中的问题是模拟颜色序列是在线程中完成的,所以如果我需要对值进行 ViewModel 轮询,由于 LED 变量的过度锁定,它可能会很慢。
因此,我希望有人可以推荐另一种解决此问题的方法。到目前为止,我唯一能真正想到的就是让 Window 数据上下文成为 LEDViewModel,然后还将 LEDViewModel 传递给 Model。然后当我调用 RGB 循环函数时,它可以根据需要更改必要的 ViewModel 属性,我根本不需要使用任何锁定。
这有意义吗?任何建议将不胜感激。