[英]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.