EventSetter 类

定义

表示样式中的事件设置器。 事件设置程序调用指定的事件处理程序以响应事件。

public ref class EventSetter : System::Windows::SetterBase
public class EventSetter : System.Windows.SetterBase
type EventSetter = class
    inherit SetterBase
Public Class EventSetter
Inherits SetterBase
继承
EventSetter

示例

以下示例在页面级样式中建立单个 EventSetter

<StackPanel
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.EventOvw2"
  Name="dpanel2"
  Initialized="PrimeHandledToo"
>
  <StackPanel.Resources>
    <Style TargetType="{x:Type Button}">
      <EventSetter Event="Click" Handler="b1SetColor"/>
    </Style>
  </StackPanel.Resources>
  <Button>Click me</Button>
  <Button Name="ThisButton" Click="HandleThis">
    Raise event, handle it, use handled=true handler to get it anyway.
  </Button>
</StackPanel>

下面显示了示例事件处理程序:

void b1SetColor(object sender, RoutedEventArgs e)
{
  Button b = e.Source as Button;
  b.Background = new SolidColorBrush(Colors.Azure);
}

void HandleThis(object sender, RoutedEventArgs e)
{
  e.Handled=true;
}
Private Sub b1SetColor(ByVal sender As Object, ByVal e As RoutedEventArgs)
  Dim b As Button = TryCast(e.Source, Button)
  b.Background = New SolidColorBrush(Colors.Azure)
End Sub

Private Sub HandleThis(ByVal sender As Object, ByVal e As RoutedEventArgs)
  e.Handled=True
End Sub

注解

事件集程序调用指定的事件处理程序以响应路由事件,这些事件适用于引用 Style 的所有元素,而无需将实例处理程序附加到每个单个元素。 只有 Style.Setters 支持 EventSetter 对象。

只能为路由事件的事件声明事件集。 可以使用直接路由策略、冒泡事件或隧道事件为路由事件声明事件集。

EventSetter 类的实例通常通过可扩展应用程序标记语言(XAML)创建,作为通过 XAML 定义的样式中的对象元素。 还可以从代码实例化 EventSetter

事件资源库不能在主题资源字典中包含的样式中使用。 这是因为运行时的主题资源字典通常是松散的二进制 XAML (BAML) 文件,并且没有任何定义处理程序的附带代码隐藏的作用域。

通过事件集集附加的处理程序在事件的任何类处理程序以及任何实例处理程序之后调用。 因此,如果类处理程序或实例处理程序标记在其参数中处理的事件,则不会调用事件 setter 声明的处理程序,除非事件集专门设置 HandledEventsTootrue

事件设置器也可能来自 BasedOn 样式。 从指定为 BasedOn 的样式的事件集处理程序将在直接样式的处理程序之后调用。

请注意,只有 Style.Setters 支持 EventSetter 对象。 触发器(TriggerBase 和派生类)不支持 EventSetter

构造函数

EventSetter()

初始化 EventSetter 类的新实例。

EventSetter(RoutedEvent, Delegate)

使用提供的事件处理程序参数初始化 EventSetter 类的新实例。

属性

Event

获取或设置此 EventSetter 响应的特定路由事件。

HandledEventsToo

获取或设置一个值,该值确定是否仍应调用分配给 setter 的处理程序,即使事件数据中标记了事件。

Handler

获取或设置对 setter 中路由事件的处理程序的引用。

IsSealed

获取一个值,该值指示此对象是否处于不可变状态。

(继承自 SetterBase)

方法

CheckSealed()

检查此对象是否为只读且无法更改。

(继承自 SetterBase)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅