WPF觸發器之數據觸發器(A)


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. 運行效果。

   

點擊這里下載源代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM