📅  最后修改于: 2023-12-03 14:48:37.270000             🧑  作者: Mango
XAML 触发器是一种 XAML 语言中的特殊元素,用于在特定条件下执行某些操作。它在 MVVM 架构中很常用,可以用于响应用户交互、数据绑定等场景。
XAML 触发器可以分为两类:
下面是一个简单的属性触发器的例子,当控件的宽度变为大于 200 时,将背景色更改为红色。
<StackPanel>
<StackPanel.Style>
<Style TargetType="StackPanel">
<Style.Triggers>
<Trigger Property="Width" Value="200">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<TextBlock Text="Hello, World!" />
</StackPanel>
这里我们使用了 Trigger
元素,它的 Property
属性指定要监听的属性名, Value
属性指定要监听该属性的值。当条件满足时, Setter
元素中的 Property
属性指定要设置变化的属性名,Value
属性指定要变化后的属性值。
当控件的宽度变为大于 200 时,触发该触发器,将 Background
属性的值设置为红色。
下面是一个简单的事件触发器的例子,当按下鼠标左键时,在控件上面添加一个红色的矩形。
<Canvas>
<Canvas.Style>
<Style TargetType="Canvas">
<Style.Triggers>
<EventTrigger RoutedEvent="UIElement.MouseDown">
<BeginStoryboard>
<Storyboard>
<RectAnimation Storyboard.TargetProperty="Fill.Opacity" Duration="0:0:0.2" From="0" To="1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
<Rectangle Width="200" Height="100" Fill="Yellow" />
</Canvas>
这里我们使用了 EventTrigger
元素,它的 RoutedEvent
属性指定要监听的事件名。当事件发生时,Storyboard
中的动画开始播放。
这个例子中,我们使用了 RectAnimation
元素,将 Fill.Opacity
属性的值从 0 变化到 1。这会创建一个从不透明到透明的渐变效果,最后呈现出一个红色的矩形。
本文介绍了 XAML 触发器的基础知识,包括属性触发器和事件触发器的用法。触发器是 XAML 中非常强大的一个功能,可以帮助我们更好地处理用户交互和数据绑定等场景。