【问题标题】:Is it possible to override a control's event handler globally?是否可以全局覆盖控件的事件处理程序?
【发布时间】:2013-07-17 03:55:57
【问题描述】:

我有大约 3000 个复选框,我希望以不同方式处理它们的“PreviewMouseLeftButtonDown”事件。是否可以全局覆盖所有复选框的默认事件处理程序?

【问题讨论】:

  • 根据您的问题,您不希望 不同 处理吗?那你怎么能在一个地方处理复选框呢?还有 3000 个复选框,你做错了什么。
  • 我认为 OP 只是意味着“与默认/标准行为不同”而不是“彼此不同”。不过我可能是错的。
  • 这是来自stackoverflow.com/questions/17663082/… 的派生问题 提供的模板更改了复选框的外观,因此我无法继续使用解决方案 2。因此我想使用解决方案 1 并全局覆盖 previewmouseleftbuttondown 以仅处理选中框时单击。

标签: c# wpf


【解决方案1】:

Checkbox.Checked 是一个路由事件。这意味着您可以在树的父级中分配一个公共事件处理程序,并根据您的选择“全局”处理事件。

有关详细信息,请参阅Routed Events Overview,特别是标题为"Singular Handler Attachment Points" 的部分,它处理这种情况。

【讨论】:

  • +1 Event Setters 部分也可能是另一种方法,您可以定义适用于复选框的全局样式,以将事件处理程序专门附加到复选框
猜你喜欢
  • 2010-10-09
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2010-10-19
  • 1970-01-01
相关资源
最近更新 更多