WPF DataTrigger的两个用法

 

 

 

1.用在textbox等输入控件上,验证输入是否合法。

首先定义一个Converter,

  
    
1 class DataConverter : IValueConverter
2 {
3 object IValueConverter.Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
4 {
5 if (value == null ) return false ;
6 if ( string .IsNullOrEmpty(value.ToString())) return false ;
7 if ( ! Regex.IsMatch(value.ToString(), " ^[1-9]\\d*$ " )) return false ;
8 return Convert.ToInt32(value) < 100 ;
9 }
10
11 object IValueConverter.ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
12 {
13 return null ;
14 }
15 }

 

 

2.Xaml里面这样子写,意思是输入的数字,如果小于100则显示为红色。

 

代码
   
     
1 < TextBox Canvas.Left = " 146 " Canvas.Top = " 199 " Height = " 23 " Name = " textBox2 " Width = " 120 " Margin = " 62,47,321,241 " >
2 < TextBox.Resources >
3 < Style TargetType = " {x:Type TextBox} " >
4 < Style.Triggers >
5 < DataTrigger Binding = " {Binding RelativeSource={RelativeSource Self},Path=Text,Converter={StaticResource dc}} " Value = " True " >
6 < Setter Property = " Foreground " Value = " Red " ></ Setter >
7 </ DataTrigger >
8 </ Style.Triggers >
9 </ Style >
10 </ TextBox.Resources >
11 </ TextBox >

 

3.combox等列表控件里面,也可以用做数据筛选。下面例子中筛选出小于100的项目,红色显示

数据源定义为:

 

代码
   
     
1 List < object > objList = new List < object > ();
2 for ( int i = 0 ; i < 200 ; i += 10 )
3 {
4 objList.Add( new { Display = " d " + i.ToString(), Tag = i.ToString() });
5 }
6
7 comboBox1.ItemsSource = objList;

 

 

Xaml:

 

代码
   
     
1 < ComboBox Canvas.Left = " 694 " Canvas.Top = " 24 " Height = " 23 " Name = " comboBox1 " Width = " 120 " Margin = " 205,47,178,241 " >
2 < ComboBox.ItemTemplate >
3 < DataTemplate >
4 < StackPanel Orientation = " Horizontal " >
5 < TextBlock Text = " {Binding Display} " Name = " t1 " ></ TextBlock >
6 < TextBlock Text = " -- " Name = " t2 " />
7 < TextBlock Text = " {Binding Tag} " Name = " t3 " ></ TextBlock >
8 </ StackPanel >
9 < DataTemplate.Triggers >
10 < DataTrigger Binding = " {Binding Path=Tag,Converter={StaticResource dc}} " Value = " True " >
11 < Setter Property = " Foreground " TargetName = " t1 " Value = " Red " />
12 < Setter Property = " Foreground " TargetName = " t2 " Value = " Red " />
13 < Setter Property = " Foreground " TargetName = " t3 " Value = " Red " />
14 </ DataTrigger >
15 </ DataTemplate.Triggers >
16 </ DataTemplate >
17 </ ComboBox.ItemTemplate >
18 </ ComboBox >

 

源码下载 http://files.cnblogs.com/xiaokang088/WpfDataTrigger.rar

你可能感兴趣的:(trigger)