【发布时间】:2010-09-16 02:31:37
【问题描述】:
我想知道在 WPF 中启用控件之间通信的正确机制是什么。我的目标是不使用常规事件,而必须手动连接它们。路由命令(隧道、冒泡)的默认行为似乎是正确的,但我想我错过了一些东西。
路由事件是 WPF 提供的一种新的基础结构,它允许事件沿着可视化树向下传送到目标元素,或者冒泡到根元素。当一个事件被引发时,它会向上或向下“移动”可视化树,在它在途中遇到的订阅该事件的任何元素上调用该事件的处理程序。 注意,这个树遍历并没有覆盖整个视觉树,只覆盖了祖先元素
使用文章中的图片,我希望“立即元素 #1”启动(引发)一个事件,然后让“立即元素 #2”处理该事件。我想实现这一点,而不必在“根元素”中添加任何代码。
基本上从我的应用程序中的任何位置触发一个事件(保存、更新状态、更改选择等),然后在其他地方处理它,而不需要两方相互了解。这可能吗?
我不相信数据绑定是答案。我想使用路由事件/命令,因为它们是在整个树中设计的,而不仅仅是在源代码管理的分支中。也许使用路由事件/命令无法完成,数据绑定就是答案。我只是不知道...
有什么想法吗?
【问题讨论】:
标签: wpf routed-commands