[英]Listening to the same Event from different sources
我只是想知道C#/ WPF是否有一个“语法糖化”变体来收听来自不同来源的同一事件。 我为给定事件设置了一个处理程序,并且我想让更多的控件在使用相同处理程序的同时侦听同一事件。
少说话,多代码。 这是我想要实现的目标:
// Presuming pEnable is a parameter, a simple bool
if (pEnable) SomeControl.MouseDown += MyMouseDownEventHandler
else SomeControl.MouseDown -= MyMouseEventHandler;
// How can I avoid repeating the snippet from above?
// E.g. Do the same for SomeOtherControl, ThisOtherControl and so on
整个三元运算符都可以解决,我只想发布我正在考虑的整个代码片段。 如果它们看起来很粗略,我可以提供其他任何细节。
提前致谢!
更新:
事实证明,由于我绑定到一个错误事件,因此在我的情况下,提出的解决方案(见下文) TreeView
。在TreeView
的情况下,这应该是PreviewMouseDownEvent
,而不是简单的MouseDown
事件。
除此之外,通过使用RoutedEvent
( 这里概述),还可以使用AddHandler
和RemoveHandler
。 有关此问题的更多信息。 再次感谢您的输入!
由于您使用的是WPF,因此最好的办法是对这些事件使用MVVM样式绑定,然后将XAML中的MouseDown事件绑定到相应视图模型上的相同方法。 这将使您可以从背后的代码中删除所有这些代码,并利用WPF的丰富绑定上下文。
然后,您可以进一步走一步,对共享相同事件实现的控件进行模板化,从而不必在整个XAML中重复所有绑定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.