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的几个用法的更多相关文章

  1. WPF DataTrigger的两个用法

    1.用在textbox等输入控件上,验证输入是否合法.首先定义一个Converter, 2.Xaml里面这样子写,意思是输入的数字,如果小于100则显示为红色. 3.combox等列表控件里面,也可以 ...

  2. WPF DataTriger 用法示例代码

    用法1: <DataGridTemplateColumn Header="{lex:LocText ExamineRoom}"> <DataGridTemplat ...

  3. WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种

    WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...

  4. WPF触发器(Trigger、DataTrigger、EventTrigger)

    WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...

  5. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  6. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  7. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  8. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  9. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

随机推荐

  1. URAL1204. Idempotents(扩展欧几里得)

    1204 大体推推 会出来这个式子 x(x-1) = k*n;n = p*q ;x(x-1)%(p*q)==0; 因为p,q都为素数 那也就是说x和x-1中必定包含这两个数 而且一个里面只能有一个 不 ...

  2. 线程——QQ邮件发送

    一.造一个QQ邮件发送的窗体 二.开始编写关于邮件发送的代码,以及当点发送按钮的时候,给发送按钮单独造了一个新的线程.这样如果发送的附件太多的话,如果不给发送按钮造新的线程,便会卡住,但是如果给发送按 ...

  3. 用AngularJS开发下一代Web应用 系列入门基础教程

    开篇介绍 AngularJS是什么东西?我觉得不用再描述了.可自行去充电一下.按照惯例,让我们先看看一个Hello World的开门简介吧. <!doctype html> <htm ...

  4. mysql-主从复制(一)

    1)用户授权 grant all privileges on share.* to 'abc'@'192.168.1.105' identified by '123456' 2)开启mysql的bin ...

  5. Hide/Show running Console

    http://stackoverflow.com/questions/3571627/show-hide-the-console-window-of-a-c-sharp-console-applica ...

  6. GrepCode

    /***************************************************************************** * GrepCode * 声明: * 最近 ...

  7. Ensemble Learning 之 Gradient Boosting 与 GBDT

    之前一篇写了关于基于权重的 Boosting 方法 Adaboost,本文主要讲述 Boosting 的另一种形式 Gradient Boosting ,在 Adaboost 中样本权重随着分类正确与 ...

  8. ORACLE执行计划 explain说明

    ORACLE SQL优化工具系列之--EXPLAIN PLAN 对于oracle数据库来说,sql语句的优化可能是对性能提升最为明显的,当然对于DBA来说,也是挑战性比较大的.为了优化一个复杂的SQL ...

  9. 【Leetcode】Evaluate Reverse Polish Notation JAVA

       一.问题描述 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators ...

  10. nginx服务器防sql注入/溢出攻击/spam及禁User-agents

    本文章给大家介绍一个nginx服务器防sql注入/溢出攻击/spam及禁User-agents实例代码,有需要了解的朋友可进入参考. 在配置文件添加如下字段即可  代码如下 复制代码 server { ...