【转】【WPF】WPF样式(Style)—触发器
樣式(Styles)由三部分構(gòu)成:設(shè)置器(Setter)、觸發(fā)器(Triggers)、資源(Resources)。
(1)觸發(fā)器,讓樣式的使用更加準(zhǔn)確、靈活和高效。
(2)觸發(fā)器(Triggers)主要分為三類,屬性觸發(fā)器(檢查從屬屬性即WPF元素自身屬性)、數(shù)據(jù)觸發(fā)器(檢查任意可綁定的屬性)、事件觸發(fā)器(用于監(jiān)聽事件)。
屬性觸發(fā)器
檢查從屬屬性的值,即WPF元素自身屬性。比如按鈕的內(nèi)容、字體的大小、顏色等等。
<Window.Resources><Style TargetType="Button"><Style.Triggers><Trigger Property="Content" Value="按鈕"><Setter Property="ToolTip" Value="這是一個按鈕"> </Setter></Trigger></Style.Triggers></Style></Window.Resources>多屬性觸發(fā)器
<Window.Resources><Style TargetType="Button"><Style.Triggers><Trigger Property="Content" Value="按鈕"><Setter Property="ToolTip" Value="這是一個按鈕"></Setter></Trigger><Trigger Property="Content" Value="Button"><Setter Property="ToolTip" Value="This is a button"></Setter></Trigger></Style.Triggers></Style></Window.Resources>?
多條件屬性觸發(fā)器?
<Window.Resources><Style TargetType="Button"><Style.Triggers><MultiTrigger><!--條件列表--><MultiTrigger.Conditions><Condition Property="Content" Value="按鈕"></Condition><Condition Property="Visibility" Value="Visible"></Condition></MultiTrigger.Conditions><!--樣式--><Setter Property="ToolTip" Value="這是一個可見按鈕"></Setter></MultiTrigger></Style.Triggers></Style></Window.Resources> 數(shù)據(jù)觸發(fā)器可以檢查任意可綁定的屬性,比如CLR對象屬性、XPath聲明等。相對于屬性觸發(fā)器,數(shù)據(jù)觸發(fā)器通常用來檢查不可見的對象屬性。
<Window.Resources><Style TargetType="Button"><Style.Triggers><DataTrigger Binding="{Binding Path=Name}" Value="李寶亨"><Setter Property="Foreground" Value="Tomato"/></DataTrigger></Style.Triggers></Style></Window.Resources><Grid><Button Content="{Binding Path=Name}" Height="23" Margin="103,94,120,84" Name="button1" Width="75"/></Grid> 定義的Person類 public partial class MainWindow : Window{public MainWindow(){InitializeComponent();DataContext = new Person("李寶亨","21"); }class Person{string _Name;public string Name{get { return _Name; }set { _Name = value; }}string _Age;public string Age{get { return _Age; }set { _Age = value; }}public Person(string name,string age){_Name = name;_Age = age;}}} 多條件數(shù)據(jù)觸發(fā)器 <Window.Resources><Style TargetType="Button"><Style.Triggers><MultiDataTrigger><!--條件列表--><MultiDataTrigger.Conditions><Condition Binding="{Binding Path=Name}" Value="李寶亨"/><Condition Binding="{Binding Path=Age}" Value="21"/></MultiDataTrigger.Conditions><Setter Property="Foreground" Value="Tomato"/></MultiDataTrigger></Style.Triggers></Style></Window.Resources><Grid><Button Content="{Binding Path=Name}" Height="23" Margin="103,94,120,84" Name="button1" Width="75"/></Grid> 事件觸發(fā)器事件觸發(fā)器用來監(jiān)聽事件。當(dāng)一個事件發(fā)生時,事件觸發(fā)器就會引發(fā)相關(guān)的動畫事件來進(jìn)行響應(yīng)。
<Window.Resources><Style TargetType="Button"><Style.Triggers><!--事件觸發(fā)器--><EventTrigger RoutedEvent="MouseEnter"><BeginStoryboard><Storyboard><DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0.1" Duration="0:0:3"></DoubleAnimation></Storyboard></BeginStoryboard></EventTrigger></Style.Triggers></Style></Window.Resources>原文地址:http://tianzengyan.blog.163.com/blog/static/1675840912012920105524490/
轉(zhuǎn)載于:https://www.cnblogs.com/mqxs/p/5489237.html
總結(jié)
以上是生活随笔為你收集整理的【转】【WPF】WPF样式(Style)—触发器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读《失控》有感
- 下一篇: WPF之坑——ICommandSourc