WPF觸發(fā)器
屬性觸發(fā)器——當(dāng)依賴屬性的值改變時調(diào)用。
數(shù)據(jù)觸發(fā)器——當(dāng)普通.NET屬性的值改變時調(diào)用。
事件觸發(fā)器——當(dāng)路由事件被觸發(fā)時調(diào)用。
1. 數(shù)據(jù)觸發(fā)器示例:數(shù)字從0~9計數(shù),當(dāng)數(shù)字變?yōu)?時候,數(shù)字變化成紅色并加粗進行顯示。
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中增加計數(shù)方法。
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頁面增加數(shù)據(jù)觸發(fā)器代碼。
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. 運行效果。
點擊這里下載源代碼。