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. 运行效果。
点击这里下载源代码。
http://m.quanqiunao.cn/gongwenbangong/12653/
推荐访问: