首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF Textbox触发器IsMouseOver

WPF Textbox触发器IsMouseOver
EN

Stack Overflow用户
提问于 2018-02-05 01:34:32
回答 1查看 807关注 0票数 0

现在wpf中的样式太难了。为什么触发器不工作?

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-05 23:26:01

您需要定义一个自定义ControlTemplate

代码语言:javascript
复制
<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触发器来覆盖这些触发器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48611034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档