WPF - 当触发器触发时,TextBox样式仍为默认设置

时间:2017-02-27 17:12:12

标签: c# wpf xaml textbox

我有Dynamic Resource来设置TextBox的样式:

<Style x:Key="TextBoxStyle" TargetType="TextBox">
    <Setter Property="FontSize" Value="30"/>
    <Setter Property="HorizontalContentAlignment" Value="Left"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="HorizontalAlignment" Value="Stretch"/>
    <Setter Property="VerticalAlignment" Value="Stretch"/>
    <Setter Property="BorderThickness" Value="2"/>
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="FontFamily" Value="CenturyGothicRegual"/>
    <Setter Property="Foreground" Value="#FF5B5B5B"/>
    <Setter Property="Opacity" Value="1"/>
    <Setter Property="BorderBrush" Value="#FF5B5B5B"/>
    <!--<Setter Property="FocusVisualStyle">
        <Setter.Value>
            <Style x:Name="ActiveStyle" TargetType="{x:Type TextBox}">
                <Setter Property="BorderBrush" Value="Black"/>
            </Style>
        </Setter.Value>
    </Setter>-->
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderBrush" Value="Black"/>
            <Setter Property="BorderThickness" Value="10"/>
        </Trigger>
        <Trigger Property="IsFocused" Value="True">
            <Setter Property="BorderBrush" Value="Pink" />
            <Setter Property="BorderThickness" Value="15"/>
        </Trigger>
    </Style.Triggers>
</Style>

使用它的文本框:

<TextBox Grid.Row="2" Grid.Column="1" Margin="2,2,2,2" Style="{DynamicResource TextBoxStyle}"
         FontSize="30" Text="asdasd" HorizontalContentAlignment="Left" VerticalContentAlignment="Center"
         FocusVisualStyle="{StaticResource TextBoxStyle}">
</TextBox>

问题是,当我将鼠标悬停在鼠标上或单击文本框时,边框会获得默认的蓝色。 然而当设置它们时,borderthickness 会发生更改(丑陋但需要调试)。那么如何解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

您需要覆盖<div class="main-panel"> @yield('section') </div> <footer class="footer"> 的{​​{1}},因为默认模板中有一个触发器会将鼠标悬停在ControlTemplate属性设置为硬编码值:

Button