DataTrigger的几个用法
1.用在textbox等输入控件上,验证输入是否合法。
<Window.Resources>
<Style TargetType="TextBox">
<Style.Triggers>
<!--Binding属性会把数据源不断送过来,送过来的值与Value属性一致就被触发。-->
<DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=Text.Length}" Value="0">
<!--这里使用RelativeSource将控件自己作为数据源,当文本框文本长度为0时触发-->
<!--也可以用Converter来转换成Bool值验证长度、格式(Convert方法中用正则表达式验证)等
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Text,Converter={StaticResource dc}}" Value="True">
-->
<Setter Property="BorderBrush" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style >
</Window.Resources> <TextBox Height="23" HorizontalAlignment="Left" Margin="50,66,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="50,108,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" />
运行结果:文本框文本长度为0,则显示设置的样式。
  
2.combox等列表控件里面,也可以用做数据筛选。
对于集合数据或者列表数据,满足一定条件的就显示成另外一种样式。
1)先添加一个转化器:
class Text2BoolConvert : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) return false;
if (string.IsNullOrEmpty(value.ToString())) return false;
if (!Regex.IsMatch(value.ToString(), "^[1-9]\\d*$")) return false; return int.Parse(value.ToString()) < ;
} public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
2)映射命名空间,把转换器放在资源中:
xmlns:c="clr-namespace:WpfDemo.VelueConvert" <Window.Resources>
<c:Text2BoolConvert x:Key="t2b"></c:Text2BoolConvert>
</Window.Resources>
3)添加ComBox显示列表
<ComboBox Height="23" HorizontalAlignment="Left" Margin="334,83,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120">
<!--ItemTemplate-->
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Display}" Name="t1"></TextBlock>
<TextBlock Text="--" Name="t2"/>
<TextBlock Text="{Binding Tag}" Name="t3"></TextBlock>
</StackPanel>
<!--DataTrigger -->
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Tag,Converter={StaticResource t2b}}" Value="True">
<Setter Property="Foreground" TargetName="t1" Value="Red" />
<Setter Property="Foreground" TargetName="t2" Value="Red" />
<Setter Property="Foreground" TargetName="t3" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
4)在Window加载的时候给ComBox指定数据源
List<object> objList = new List<object>();
for (int i = ; i < ; i += )
{
objList.Add(new { Display = "d" + i.ToString(), Tag = i.ToString() });
} comboBox1.ItemsSource = objList;
3.特殊状态的样式
<!--EditMode的背景-->
<UserControl.Resources>
<Style x:Key="menuText" TargetType="TextBlock" >
<Style.Triggers>
<!--设置修改时候的样式-->
<DataTrigger Binding="{Binding EditMode}" Value="0">
<Setter Property="Foreground" Value="DimGray" />
</DataTrigger>
</Style.Triggers>
<Setter Property="FontSize" Value="13" />
</Style>
</UserControl.Resources>
DataTrigger的几个用法的更多相关文章
- WPF DataTrigger的两个用法
		
1.用在textbox等输入控件上,验证输入是否合法.首先定义一个Converter, 2.Xaml里面这样子写,意思是输入的数字,如果小于100则显示为红色. 3.combox等列表控件里面,也可以 ...
 - WPF DataTriger 用法示例代码
		
用法1: <DataGridTemplateColumn Header="{lex:LocText ExamineRoom}"> <DataGridTemplat ...
 - WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种
		
WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...
 - WPF触发器(Trigger、DataTrigger、EventTrigger)
		
WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...
 - EditText 基本用法
		
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
 - jquery插件的用法之cookie 插件
		
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
 - Java中的Socket的用法
		
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
 - [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
		
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
 - python enumerate 用法
		
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...
 
随机推荐
- Hibernate配置文件和映射元素解释
			
象关系的映射是用一个XML文档来说明的.映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等.下面从一个映射的例子开始讲解映射元素. AD:干货来了,不要等!WOT20 ...
 - 极限编程,最强N皇后JAVA解题代码,4秒出15皇后,33秒出16皇后
			
私人博客原文链接来自:http://www.hexcode.cn/article/show/eight-queen 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,循环控制及其优化 8皇后以 ...
 - POJ3592 Instantaneous Transference tarjan +spfa
			
链接:http://poj.org/problem?id=3592 题意:题目大意:给定一个矩阵,西南角为出发点,每个单位都有一订价值的金矿(#默示岩石,不成达,*默示时佛门,可以达到指定单位),队# ...
 - hdfs工作原理
			
一.NameNode和DataNode (1)NameNode NameNode的作用是管理文件目录结构,是管理数据节点的.NameNode维护两套数据:一套是文件目录与数据块之间的关系,另一套是数据 ...
 - [转]glew, glee与 gl glu glut glx glext的区别和关系
			
原文地址:http://blog.csdn.net/delacroix_xu/article/details/5881942 因为也是初接触,所以就当了解,等深入学习后再回顾这篇文章观点. GLEW是 ...
 - phonegap 百度云推
			
1 创建新工程 -----获取api key 和secret key 2,推送设置 3,新建安卓项目,并把应用包名 和 推送中设置的包名设置一致 4,下载百度云客户端sdk 5,解压,并添加libs文 ...
 - T-SQL备忘(3):分组合并
			
--CREATE TABLE test(code varchar(50), [name] varchar(10),[count] int ) --INSERT test SELECT '001' , ...
 - UVa 11384 Help is needed for Dexter 正整数序列
			
给定一个正整数 n ,你的任务使用最少的操作次数把序列 1, 2, 3, -- , n 中的所有数都变成 0 .每次操作可以从序列中选择一个或者多个数,同时减去一个相同的正整数.比如,1, 2, 3 ...
 - Karel运行环境配置
			
1.下载 见http://wenku.baidu.com/view/24762ced998fcc22bcd10d5e.html 2.界面空白问题 问题:运行Karel后,发现整个界面空白一片,没有任何 ...
 - ubuntu 查看系统版本信息
			
查看cpu信息cat /proc/cpiinfo 查看ubuntu版本:cat /etc/issue 查看系统是32位还是64位方法1:#查看long的位数,返回32或64 getconf LONG_ ...