繁体   English   中英

WPF文本框触发器IsMouseOver

[英]WPF Textbox Trigger IsMouseOver

现在使用wpf中的样式是如此困难。 为什么触发器不起作用???

<TextBox x:Name="txbUsername" VerticalAlignment="Center" HorizontalAlignment="Center"
                 Width="350" Height="20" Margin="5 0 0 0" BorderThickness="0 0 0 1" Background="#eff0f1">
            <TextBox.Style>
                <Style TargetType="{x:Type TextBox}">
                    <Setter Property="FontSize" Value="14"></Setter>
                    <Setter Property="FontFamily" Value="Verdana, Geneva, sans-serif"></Setter>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderThickness" Value="0 0 0 1"></Setter>
                            <Setter Property="BorderBrush" Value="#a70711"></Setter>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>

您需要定义一个自定义ControlTemplate

<TextBox x:Name="txbUsername" VerticalAlignment="Center" HorizontalAlignment="Center"
         Width="350" Height="20" Margin="5 0 0 0" BorderThickness="0 0 0 1" Background="#eff0f1">
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="FontSize" Value="14"></Setter>
            <Setter Property="FontFamily" Value="Verdana, Geneva, sans-serif"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TextBox}">
                        <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                            <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Opacity" TargetName="border" Value="0.56"/>
                            </Trigger>
                            <Trigger Property="IsKeyboardFocused" Value="true">
                                <Setter Property="BorderThickness" Value="0 0 0 1"></Setter>
                                <Setter Property="BorderBrush" Value="#a70711"></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TextBox.Style>
</TextBox>

原因是默认ControlTemplate中定义了一些触发器,这些触发器不能通过简单地定义一些自定义Style触发器来覆盖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM