WPF觸發器
屬性觸發器——當依賴屬性的值改變時調用。
數據觸發器——當普通.NET屬性的值改變時調用。
事件觸發器——當路由事件被觸發時調用。
1. 數據觸發器示例:數字從0~9計數,當數字變為8時候,數字變化成紅色並加粗進行顯示。
0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 ->0
2. 新建WPF項目,項目名稱:DataTriggerDemo。
3. 新增Views文件夾,右鍵Views文件夾,新增用戶控件Timer.xaml;並在頁面中加入Button和Textblock控件。
4. 新增ViewModels文件夾,右鍵ViewModels文件夾,新增類TimerViewModel.cs;在代碼中增加StartCommand命令和DisplayNumber屬性。
1 private int displayNumber = 0; 2 public int DisplayNumber 3 { 4 get { return displayNumber; } 5 set 6 { 7 displayNumber = value; 8 NotifyPropertyChanged("DisplayNumber"); 9 } 10 } 11 12 private ICommand startCommand; 13 public ICommand StartCommand 14 { 15 get 16 { 17 if (startCommand == null) 18 { 19 startCommand = new RelayCommand(param => 20 { 21 Start(); 22 }, param => true); 23 } return startCommand; 24 } 25 }
5. 在TimerViewModel中增加計數方法。
1 private void Start() 2 { 3 new Timer(new TimerCallback(param => 4 { 5 DisplayNumber++; 6 if (DisplayNumber == 10) 7 { 8 DisplayNumber = 0; 9 } 10 })).Change(0, 1000); 11 }
6. 在Timer.xaml頁面增加數據觸發器代碼。
1 <UserControl.Resources> 2 <Style TargetType="TextBlock"> 3 <Style.Triggers> 4 <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Text}" Value="8"> 5 <Setter Property="Foreground" 6 Value="Red"></Setter> 7 <Setter Property="FontWeight" 8 Value="Bold"></Setter> 9 <Setter Property="FontSize" 10 Value="29"></Setter> 11 </DataTrigger> 12 </Style.Triggers> 13 </Style> 14 </UserControl.Resources>
7. 運行效果。
點擊這里下載源代碼。