WPF(触发器)

使用触发器,可以动态地更改控件的外观,因为一些事件或属性值改变了。通常这都必须在代码中实现,使用WPF,也可以用XAML实现,而这只会影响UI。

1.属性触发器

属性触发器在属性值改变时激活。Style类有一个Triggers属性,通过它可以指定属性触发器。

<Window x:Class="WpfAppLearn1.Window4"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppLearn1"
        mc:Ignorable="d" Title="Window4" Height="450" Width="800">
    <Canvas HorizontalAlignment="Left" Height="281" VerticalAlignment="Top" Width="679">
        <Canvas.Resources>
            <Style x:Key="tbStyle1" TargetType="TextBox">
                <Setter Property="Background" Value="Aqua" />
                <Setter Property="Foreground" Value="Chocolate" />
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="AliceBlue" />
                        <Setter Property="Text" Value="Hello" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Canvas.Resources>
        <TextBox Style="{StaticResource tbStyle1}" Height="23" Width="120" Canvas.Left="175" Canvas.Top="107" />
    </Canvas>
</Window>

上述代码,当鼠标移入TextBox时,将背景色改为AliceBlue,文本改为Hello。当 鼠标移出TextBox时,样式会恢复本来的效果,这里就会将背景色重新设置为Aqua,文本变为空。

PS:触发器触发时要修改的值若不是控件的默认值,就必须在样式中定义,否则触发没效果。

<TextBox Style="{StaticResource tbStyle1}" Background="Beige" Height="23" Width="120" />

若是直接给TextBox定义背景色,当触发器激活时,并不会改变控件的背景色,文本效果还是可以触发的,若是直接定义文本不为TextBox(TextBox的Text默认值为TextBox)时也不会达到效果。

2.多触发器 

属性的值变化时,就会激活属性触发器,如果因为两个或多个属性同时改变时激活

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bridge_go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值