首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wpf命令模式

wpf命令模式
EN

Stack Overflow用户
提问于 2010-04-15 17:39:17
回答 1查看 1.1K关注 0票数 1

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

现在,这个应用程序的架构感觉非常混乱,我相信有一个更干净的方法来完成它。看起来是这样的:

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

1)主窗口上按钮的事件处理程序调用SideWindowControl.PageDown()

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

3)最后,gui,ShowSideWindowDisplay订阅了SideWindowControl.Actions事件,处理该事件,并将列表框向下滚动-注意,因为它位于一个不同的线程中,它必须通过Dispatcher.Invoke()运行命令来完成这个任务。

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

我真的很感激任何建议!!谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-04-19 18:09:29

您可以尝试使用Mediator/Messenger在视图或ViewModels之间发送消息。您可以查看MVVM灯附带的实现,看看它是如何实现的。

这个想法应该是这样的:

  1. 主窗口执行操作
  2. 操作在ViewModel中触发命令。
  3. 方法向Messenger发送消息。
  4. 侧窗口ViewModel订阅它
  5. 消息到达时,在侧窗口VM上触发一个事件;侧窗口相应地采取行动。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2647659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档