【问题标题】:wpf command patternwpf 命令模式
【发布时间】:2010-04-20 02:09:29
【问题描述】:

我有一个 wpf gui,它在单独的窗口和主应用程序的单独线程中显示信息列表。当用户在主窗口中执行操作时,侧窗口会更新。 (例如,如果您在主窗口中单击向下翻页,侧窗口中的列表框将向下翻页)。

现在这个应用程序的架构感觉非常混乱,我相信有一种更简洁的方法可以做到这一点。它看起来像这样:

主窗口包含一个单例 SideWindowControl,它使用事件与 SideWindowDisplay 的一个实例进行通信 - 例如,pagedown 按钮的工作方式如下:

1)主窗口按钮的事件处理函数调用SideWindowControl.PageDown()

2) 在 PageDown() 函数中创建并抛出一个事件。

3) 最后是 gui,ShowSideWindowDisplay 正在订阅 SideWindowControl.Actions 事件处理该事件并实际向下滚动列表框 - 请注意,因为它位于不同的线程中,因此必须通过 Dispatcher.Invoke( )

这似乎是一个非常混乱的方式,必须有一个更清晰的方式(唯一不能改变的部分是主窗口和侧窗口必须在不同的线程上)。也许使用 WPF 命令?

我非常感谢任何建议!谢谢

【问题讨论】:

    标签: c# wpf design-patterns


    【解决方案1】:

    您可以尝试使用 Mediator/Messenger 在 View 或 ViewModel 之间发送消息。您可以查看MVVM Light 附带的实现,看看它是如何完成的。

    这个想法是这样的:

    1. 主窗口执行操作
    2. Action 在 ViewModel 中触发命令
    3. Command 方法向 Messenger 发送消息
    4. 侧窗 ViewModel 订阅它
    5. 消息到达时在侧窗 VM 上触发事件;侧窗会相应地起作用。

    另一种选择是将两个控件绑定到同一个 ViewModel,然后它将包含所有命令并协调操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2017-12-06
      • 2016-05-03
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多