WPF DataTrigger的两个用法

摘要:
Regex.IsMatch)returnfalse;8returnConvert.ToInt32˂100;9} 1011objectIValueConverter。ConvertBack12{13returnnull;14}15}2。Xaml是这样写的,这意味着如果输入数字小于100,则为红色。

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则显示为红色。

WPF DataTrigger的两个用法第1张WPF DataTrigger的两个用法第2张代码
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的项目,红色显示

数据源定义为:

WPF DataTrigger的两个用法第3张WPF DataTrigger的两个用法第4张代码
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:

WPF DataTrigger的两个用法第5张WPF DataTrigger的两个用法第6张代码
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>

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

免责声明:文章转载自《WPF DataTrigger的两个用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇上海 住宅税费ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

微信内置浏览器清理缓存方法

给出清除微信浏览器缓存的终极方法:您可以尝试可能不会成功的方法:window。name){varstr=Math.random().toString(36).substr(2);S='+str;//兼容微信浏览器刷新窗口。name='isread';}&lt;3.Android可以打开此网站以清除cache://debugx5.qq。com公司/☆☆...

ESXi挂载NFS共享存储

使用万兆交换机,ESXi使用NFS协议连接存储。本文介绍的是通过NFS协议挂载共享存储上的VS01卷,共享存储上已经赋予ESXi主机访问该卷的权限。...

nginx配置跨域(CORS)、防盗链(valid_referers)、缓存(expires)、压缩(gzip)

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服AJAX只能同源使用的限制。服务器根据这个值,在许可范围内,则在头信息包含Access-Control-Allow-Origin。...

scan chain的原理和实现——5.UDTP

UDTP(用户定义的测试点)指示DFTC在设计中用户指定的位置插入控制点和观察点。1.为什么使用UDTP?修复不可控的时钟和/或异步输入;增加设计的测试覆盖率;减少模式数量2.UDTP类型① 力0、力1、力01、力z0、力z1、力z01②控制_ 0...

登陆脚本

#!' num_ count+=1其他:lock_ input(用户名)#############1##########_###!...

HTML中canvas的大小调整

今天用到canvas元素,发现它的大小不是像普通dom元素一样,直接设置css样式可以改变的,它会由自己原本的大小伸缩。例如,1.如果直接在canvas元素中添加style='300px;height:300px',这会导致伸缩,如图2.换种方式在css样式表中加入样式设置宽高产生的效果也是一样的。...