【问题标题】:Set an event to all controls of same type为所有相同类型的控件设置一个事件
【发布时间】:2013-02-09 22:49:06
【问题描述】:

在 WPF 中有一种方法可以为所有相同类型的控件设置特定类型的事件。例如,我试图在 TextBlock 类型的所有控件上设置 MouseLeftButtonDown 事件。这是我试图做的显然是错误的:

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="MouseLeftButtonDown" Value="TextBlock_LeftClick"/>
</Style>

有没有办法做到这一点?

【问题讨论】:

    标签: wpf events controls


    【解决方案1】:

    是的,有一种方法,您可以使用Style 中的EventSetter 属性为应用了该样式的所有Elements 设置EventHandler

    例子:

    <Style TargetType="{x:Type TextBlock}">
        <EventSetter Event="MouseLeftButtonDown" Handler="TextBlock_LeftClick" />
    </Style>
    

    【讨论】:

    • 我使用您的方法将鼠标单击事件添加到椭圆,但遇到如下错误:“WpfApplication1.App”不包含“Ellipse_LeftClick”的定义,并且没有扩展方法“Ellipse_LeftClick”接受可以找到“WpfApplication1.App”类型的第一个参数(您是否缺少 using 指令或程序集引用?)
    【解决方案2】:

    您可以使用 WPF EventManager 在单个语句中执行此操作

    EventManager.RegisterClassHandler(typeof(Hyperlink), 
                                      Hyperlink.ClickEvent, 
                                     new RoutedEventHandler(this.OnHyperlinkClick));
    

    【讨论】:

      猜你喜欢
      • 2016-07-03
      • 2012-04-21
      • 2019-05-18
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2013-11-25
      相关资源
      最近更新 更多