EventSetter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示樣式中的事件 setter。 事件集器會叫用指定的事件處理程式來回應事件。
public ref class EventSetter : System::Windows::SetterBase
public class EventSetter : System.Windows.SetterBase
type EventSetter = class
inherit SetterBase
Public Class EventSetter
Inherits SetterBase
- 繼承
範例
下列範例會在頁面層級樣式內建立單一 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
備註
事件 setter 會叫用指定的事件處理程式來回應路由事件,而此事件會套用至參考 Style 的所有元素,而不需要您將實例處理程式附加至每個個別專案。 只有 Style.Setters 支援 EventSetter 物件。
您只能針對路由事件的事件宣告事件 setter。 您可以使用直接路由策略、反升事件或通道事件來宣告路由事件的事件設定器。
EventSetter 類別的實例通常是透過 Extensible Application Markup Language (XAML) 建立,做為透過 XAML 定義之樣式中的物件專案。 EventSetter 也可能從程式代碼具現化。
事件集器不能用在主題資源字典中包含的樣式中。 這是因為運行時間的主題資源字典通常是鬆散的二進位 XAML (BAML) 檔案,而且沒有定義處理程式的程式代碼後置可以存在的任何範圍。
透過事件 setter 附加的處理程式會在事件的任何類別處理程式之後,以及在任何實例處理程式之後叫用。 因此,如果類別處理程式或實例處理程序標記在其自變數中處理的事件,則除非事件 setter 特別設定 HandledEventsTootrue
,否則不會叫用事件 setter 所宣告的處理程式。
事件設定器也可能來自 BasedOn 樣式。 指定為 BasedOn 之樣式的事件 setter 處理程式,將會在立即樣式上的處理程式之後叫用。
請注意,只有 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) |