WPF 样式触发器
2011-09-28 15:38
323 查看
触发器
1.属性触发器
当某属性有一特定值,属性触发器执行一个Setter。当属性失去这个值时,属性触发器重做该Setter。
2.数据触发器
同属性触发器,但数据触发器可由任何.NET属性触发意外,而非仅由依赖属性触发。
3.事件触发器
建设中...
4.用触发器表示更多的复杂逻辑
1.属性触发器
当某属性有一特定值,属性触发器执行一个Setter。当属性失去这个值时,属性触发器重做该Setter。
<StackPanel.Resources> <!-- 通过Style的属性触发器改变按钮鼠标经过样式 --> <Style x:Key="buttonStyle" TargetType="{x:Type Button}"> <Style.Triggers> <!-- 按钮鼠标经过 --> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="RenderTransform"> <Setter.Value> <RotateTransform Angle="10"/> </Setter.Value> </Setter> <Setter Property="Foreground" Value="Black"/> </Trigger> </Style.Triggers> <!-- 正常样式 --> <Setter Property="Width" Value="50"/> <Setter Property="Height" Value="50"/> <Setter Property="Foreground" Value="White"/> <Setter Property="Background" Value="BurlyWood"/> </Style> <!-- 通过Style的属性触发器改变绑定验证规则失败时文本框样式 --> <Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}"> <Style.Triggers> <!-- 文本框绑定内容验证失败 --> <Trigger Property="Validation.HasError" Value="True"> <Setter Property="Background" Value="Red"/> <!-- 通过RelativeSource获取任何应用了此样式的元素的ErrorContent --> <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/> </Trigger> </Style.Triggers> <!-- 正常样式 --> <Setter Property="Background" Value="Azure"/> </Style> </StackPanel.Resources> <Button Name="but" Style="{StaticResource buttonStyle}">Button</Button> <TextBox Name="txt" Style="{StaticResource textBoxStyle}"> <TextBox.Text> <Binding ElementName="but" Path="Content"> <!-- 绑定自定义验证规则 --> <Binding.ValidationRules> <local:JpgValidation/> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox>
2.数据触发器
同属性触发器,但数据触发器可由任何.NET属性触发意外,而非仅由依赖属性触发。
<StackPanel.Resources> <Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}"> <Style.Triggers> <!-- 当文本框值为disabled时,设置文本框不可用 --> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="disabled"> <Setter Property="IsEnabled" Value="False"/> </DataTrigger> </Style.Triggers> <!-- 用输入值设置文本框背景色 --> <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Text}"/> </Style> </StackPanel.Resources>
3.事件触发器
建设中...
4.用触发器表示更多的复杂逻辑
<StackPanel.Resources> <Style x:Key="textBoxStyle2" TargetType="{x:Type TextBox}"> <Style.Triggers> <!-- 逻辑或,当鼠标经过或获取焦点,设置前景色为红 --> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Foreground" Value="Red"/> </Trigger> <Trigger Property="IsFocused" Value="True"> <Setter Property="Foreground" Value="Red"/> </Trigger> <!-- Trigger变体 --> <MultiTrigger> <!-- 逻辑且,当鼠标经过且获取焦点,设置背景色为绿 --> <MultiTrigger.Conditions> <Condition Property="IsMouseOver" Value="True"/> <Condition Property="IsFocused" Value="True"/> </MultiTrigger.Conditions> <Setter Property="Background" Value="Green"/> </MultiTrigger> </Style.Triggers> </Style> </StackPanel.Resources>
相关文章推荐
- 【转】【WPF】WPF样式(Style)—触发器
- WPF样式——多条件触发器
- WPF样式\控件模版\触发器
- WPF 样式(定义样式、引用样式、样式作用域、Trigger触发器)
- WPF中样式的设置
- WPF ComboBox样式
- WPF自定义窗口样式小技巧
- WPF – 使用触发器
- WPF窗体样式继承
- WPF如何自定义TabControl控件样式示例详解
- WPF设置样式的几种方式
- WPF中的Style(风格,样式)
- 清空WPF自带样式,以及透明按钮
- WPF – 使用触发器
- wpf 样式继承
- wpf 使用radioButton 显示排序箭头样式
- WPF DevExpress 设置雷达图Radar样式
- wpf自定义按钮样式
- wpf Combobox 样式的问题
- WPF中的Style(风格,样式)