WPF樣式的觸發器
阿新 • • 發佈:2021-11-18
EventSetter:當事件觸發的時候會執行Handler的事件處理程式
樣式的觸發器:
使用觸發器可自動完成簡單的樣式的改變,不需要使用程式碼,也可以完成不少工作。 觸發器通過Style.Trigger集合連結到樣式。每個樣式可以有任意多個觸發器。每個觸發器都是System.Windows.TriggerBase的例項。 TriggerBase的子類名稱 | 說明 |
Trigger | 這是一種最簡單的觸發器。可以監測依賴項屬性的變化,然後設定器改變樣式。 |
MultiTrigger | 與Trigger類似,但這種觸發器聯合了多個條件。只有滿足了所有這些條件,才會啟動觸發器。 |
DataTrigger | 這種觸發器使用資料繫結,與Trigger類似,只不過監視的是任意繫結資料的變化。 |
MultiDataTrigger | 聯合多個數據觸發器。 |
EventTrigger | 這是最複雜的觸發器。當事件發生時,這種觸發器應用動畫。 |
簡單的觸發器(Trigger)
可為任何依賴項屬性關聯簡單觸發器。例如,可通過相應Control類的IsFocused、IsMouseOver以及IsPressed屬性的變化,建立滑鼠懸停效果和焦點效果。 每個觸發器都制定了正在監視的屬性以及正在等待的屬性值。當屬性值出現時,將應用Trigger.Setters集合裡的設定器。<Window.Resources> <Style x:Key="BigFontButton"> <Style.Setters> <Setter Property="Control.FontFamily" Value="Times New Roman"/> <Setter Property="Control.FontSize" Value="18"/> <Setter Property="Control.FontWeight" Value="Bold"/> </Style.Setters> <Style.Triggers> <Trigger Property="Control.IsFocused" Value="True"> //檢測是否聚焦,然後執行改變前景色<Setter Property="Control.Foreground" Value="DarkRed"/> </Trigger> </Style.Triggers> </Style> </Window.Resources>
MultiTrigger
根據多個條件觸發<Style.Triggers>
<MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Property="Control.IsFocused" Value="true"/> <Condition Property="Control.IsMouseOver" Value="true"/> </MultiDataTrigger.Conditions> <MultiDataTrigger.Setters> <Setter Property="Control.Foreground" Value="DarkRed"/> </MultiDataTrigger.Setters> </MultiDataTrigger> </Style.Triggers>
DataTrigger(資料觸發器)
根據繫結的資料內容的值內容觸發
<Style.Triggers>
<DataTrigger Binding="{Binding Button.Text }" Value="hello">
<Setter Property="Foreground" Value="Red"> </Setter>
</DataTrigger>
</Style.Triggers>
MultiDataTrigger跟MultiTrigger同理
事件觸發器
<Style.Triggers> <EventTrigger RoutedEvent="Mouse.MouseEnter"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <DoubleAnimation Duration="0:0:3" Storyboard.TargetProperty="FontSize" To="50"/> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> <EventTrigger RoutedEvent="Mouse.MouseLeave"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <DoubleAnimation Duration="0:0:3" Storyboard.TargetProperty="FontSize"/> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Style.Triggers>