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. 运行效果。
点击这里下载源代码。
作者:backslash112 (美国CS研究生在读/机器人工程师)
出处:http://sirkevin.cnblogs.com
GitHub:https://github.com/backslash112
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://sirkevin.cnblogs.com
GitHub:https://github.com/backslash112
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2012-10-08 12:09 backslash112 阅读(9073) 评论(0) 编辑 收藏 举报