关于WPF触发器

触发器

使用触发器,可以动态地更改控件的外观,因为一些属性值改变了。例如,用户把鼠标移动到按钮上,按钮就会改变其外观。通常,者必须在C#代码中实现,使用WPF,也可以用XAML实现,而这只会影响UI

XAML有几个触发器。

属性触发器在属性值改变时激活。

多触发器基于多个属性值。

事件触发器在事件发生时激活。

数据触发器在绑定的数据改变时激活。

属性触发器:

Style类有一个Triggers属性,通过它可以指定属性触发器。下面的示例,可以把代码赋值看一下效果。首先我们将一个Button元素放在Grid面板中。利用Window资源定义Button元素的默认样式。然后我们将Button的颜色设置为SkyBlue,将字体大小(fontSize)设置为17。这是启动时的样式。最后我们使用触发器改变控件的样式。

<Window.Resources>

        <Style TargetType="Button">

            <Setter Property="Background" Value="SkyBlue"/>

            <Setter Property="FontSize" Value="17"/>

            <Setter Property="Foreground" Value="White"/>

<!--定义触发器-->

            <Style.Triggers>

                <Trigger Property="IsMouseOver" Value="True">

                    <Setter Property="Background" Value="#e4c6d4"/>

                    <Setter Property="FontSize" Value="22"/>

                </Trigger>

                <Trigger Property="IsPressed" Value="True">

                    <Setter Property="Foreground" Value="SkyBlue"/>

                    <Setter Property="FontSize" Value="17"/>

                </Trigger>

            </Style.Triggers>

        </Style>

</Window.Resources>

 <Grid>

        <!--按钮-->

        <Button Content="点击啊!" Width="200" Height="50" />

</Grid>

触发器在Style.Triggers元素中用Trigger元素定义。将一个触发器赋予IsMouseOver属性,另一个触发器赋予IsPressed属性。这两个属性通过应用了样式的Button类定义。

如果IsMouseOver属性的值是true,就会激活触发器,将Foreground属性设置为Red,将FontSize属性设置为22.如果按下该按钮,IsPressed属性就是true,激活第二个触发器,并将textBox的Foreground属性设置为SkyBlue。FontSize属性设置为17。

使用属性触发器,很容易改变控件的外观、字体、颜色、不透明度等。在鼠标滑过控件时,键盘设置焦点时——都不需要编写任何代码。

多触发器

属性的值变化时,就会激活属性触发器,如果因为两个或多个属性有特定的值,而需要设置触发器,就可以使用MultiTrigger。

MultiTrigger有一个Conditions属性,可以在其中设置属性的有效值。它还有一个个Setters属性,可以在其中指定需要设置的属性。

实例:

<Window.Resources>

        <Style TargetType="TextBox">

            <Style.Triggers>

                <MultiTrigger>

                    <MultiTrigger.Conditions>

                        <Condition Property="IsEnabled" Value="True"/>

                        <

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值