zoukankan      html  css  js  c++  java
  • WPF 单个触发器、多个触发器、多条件触发器 ^

    Trigger的使用。利用Trigger对象,我们可以接收到属性变化或者事件发生,并据此做出适当的响应。Trigger本身也是支持多种类型的,下面是一个属性Trigger的例子:

    <Style TargetType="ListBoxItem">
    <Setter Property="Opacity" Value="0.5" />
    <Style.Triggers>
    <Trigger Property="IsSelected" Value="True">
    <Setter Property="Opacity" Value="1.0" />
    <!--其他的Setters->
    </Trigger>
    </Style.Triggers>
    </Style>

    这段代码设置ListBoxItem的Opacity属性的默认值为0.5。但是,在IsSelected属性为True时,ListBoxItem的Opacity属性值为1。从上面的代码还可以看出,在满足一个条件后,可以触发多个行为(定义多个Setters)。同样地,上面的Triggers也是一个集合,也可以添加多个Trigger。

    注意上面的多个Trigger是相互独立的,不会互相影响。另一种情况是需要满足多个条件时才触发某种行为。为此,WPF提供了MultiTrigger以满足这种需求。比如:

    <Style TargetType="{x:Type Button}">
    <Style.Triggers>
    <MultiTrigger>
    <MultiTrigger.Conditions>
    <Condition Property="IsMouseOver" Value="True" />
    <Condition Property="Content" Value="{x:Null}" />
    </MultiTrigger.Conditions>
    <Setter Property="Background" Value="Yellow" />
    </MultiTrigger>
    </Style.Triggers>
    </Style>

    这就表示只有IsMouseOver为True、Content为NULL的时候才将Background设置为Yellow。

    以上的Trigger都是基于元素属性的。对于鼠标移动等事件的处理;

    WPF有专门的EventTrigger。但因EventTrigger多数时候是和Storyboard配合使用的;

    现在所讨论的Trigger都是基于属性的值或者事件的。

    温馨提醒:

    对于小的应用程序,这个ControlTemplate一般直接定义在XAML的根元素。对于大的应用程序,通常应该定义在专门的资源XAML文件中,根元素是ResourceDictionary。

    不管定义在什么地方,除了前面用Style定义外观,以及用Resource实现元素重用外

    <ControlTemplate x:Key="templateThermometer" TargetType="{x:Type ProgressBar}">
    <ControlTemplate.Resources>
    <RadialGradientBrush x:Key="brushBowl"
    GradientOrigin="0.3 0.3">
    <GradientStop Offset="0" Color="Pink" />
    <GradientStop Offset="1" Color="Red" />
    </RadialGradientBrush>
    </ControlTemplate.Resources>
    <!-- 忽略其他相关内容-->
    </ControlTemplate>

  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/babyGee/p/2525828.html
Copyright © 2011-2022 走看看