西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发其它知识 → WPF中的属性、数据、事件触发器详细讲解

WPF中的属性、数据、事件触发器详细讲解

相关软件相关文章发表评论 来源:本站整理时间:2011/1/31 20:22:12字体大小:A-A+

作者:佚名点击:835次评论:1次标签: WPF 触发器

  • 类型:塔防游戏大小:34.5M语言:中文 评分:10.0
  • 标签:
立即下载
本文摘要:
1:属性触发器;
2:数据触发器;
3:事件触发器;

Style、ControlTemplate 和 DataTemplate 都有触发器集合。
属性触发器只检查WPF从属属性,而数据触发器则可检查任何一种可绑定的属性。属性触发器一般用来检查WPF可视元素的属性,而数据触发器则通常用来检查不可视对象的属性。
属性触发器:通过此机制,一个属性的更改会在另一个属性中触发即时或动态更改。
数据触发器:通过此机制,事件会在属性中触发动态更改。
数据触发器:EventTrigger,它根据事件的引发来启动一组操作,但这类操作仅限于动画。


一:属性触发器
查看代码片段1:

<Style TargetType="ListBoxItem">
<Setter Property="Opacity" Value="0.5" />
<Setter Property="MaxHeight" Value="75" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Trigger.Setters>
<Setter Property="Opacity" Value="1.0" />
</Trigger.Setters>
</Trigger>
</Style.Triggers>
</Style> 表示在ListBoxItem的IsSelected属性变为True的时候,其另外一个属性Opacity的值变为1.0。

1.1单个触发器
代码片段1就是单个触发器。

1.2多个触发器
可以为ListBoxItem设置多个触发器。

1.3多条件属性触发器
多条件触发器就是说,同时满足几个条件的时候才触发行为。
如代码片段2:

<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsFocused" Value="True"></Condition>
<Condition Property="Content" Value="{x:Null}"></Condition>
</MultiTrigger.Conditions>
<Setter Property="ToolTip" Value="content is null!"></Setter>
</MultiTrigger>二:数据触发器
使用 DataTrigger,可以在数据对象的属性值与指定的 Value 匹配时设置属性值。例如,在显示 Employee 对象列表时,可能希望前景色根据每个 Employee 的当前出勤情况而变化。(例如,用紫色前景色显示当前正在休假的 Employee。)
查看代码片段3

<Window.Resources>
<c:Places x:Key="PlacesData"/>

<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=State}" Value="WA">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Name}" Value="Portland" />
<Condition Binding="{Binding Path=State}" Value="OR" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Cyan" />
</MultiDataTrigger>
</Style.Triggers>
</Style>

<DataTemplate DataType="{x:Type c:Place}">
<Canvas Width="160" Height="20">
<TextBlock FontSize="12"
Width="130" Canvas.Left="0" Text="{Binding Path=Name}"/>
<TextBlock FontSize="12" Width="30"
Canvas.Left="130" Text="{Binding Path=State}"/>
</Canvas>
</DataTemplate>
</Window.Resources>

<StackPanel>
<TextBlock FontSize="18" Margin="5" FontWeight="Bold"
HorizontalAlignment="Center">Data Trigger Sample</TextBlock>
<ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"
ItemsSource="{Binding Source={StaticResource PlacesData}}"/>
</StackPanel>2.1单条件触发
以上的DataTrigger就是一个单条件触发器。

2.2多条件触发
以上的MultiDataTrigger就是一个多条件触发器。


三:事件触发器
属性触发器用来检查从属属性的值,数据触发器用来检查CLR属性的值,而事件触发器用来监视事件。当一个事件发生的时候,事件触发器就会通过引发相关的动画事件来响应。
如代码片段4:
<Style TargetType="ListBoxItem">
<Setter Property="Opacity" Value="0.5" />
<Setter Property="MaxHeight" Value="75" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Trigger.Setters>
<Setter Property="Opacity" Value="1.0" />
</Trigger.Setters>
</Trigger>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="0:0:0.2"
Storyboard.TargetProperty="MaxHeight"
To="90" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="Mouse.MouseLeave">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="0:0:1"
Storyboard.TargetProperty="MaxHeight" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
    魔兽塔防地图
    (300)魔兽塔防地图
    塔防,即炮塔防御的简称,也称。塔防受众很广,游戏模式简单而可玩性强,是智力和策略的比拼。当塔防与这两种游戏类型融合在一起的话,游戏就会变得更好玩,同时也很休闲。小编在这里为大家搜集整理了许多魔兽争霸塔防地图,欢迎感兴趣的玩家们前来下载。...更多>>
    塔防游戏
    (70)塔防游戏
    西西游戏网提供最新最热门的塔防游戏,塔防游戏顾名思义就是炮塔防守游戏,玩家需要建造炮塔轰炸一些进攻的敌人保卫家园,塔防游戏操作都很简单,就是在最合理的位置放置炮塔,无需其他的操作,可能有的塔防游戏会添加一些技能,但是也没什么难度的哦.热门游戏保卫萝卜兽人必须死炮塔防御塔防三国志等等,太多了。...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(1)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)