禁用时的WPF文本框样式

Cod*_*ire 1 wpf

我正在尝试创建一个简单的TextBox样式。我想创建一个触发器以在禁用文本框时更改颜色:

<Style TargetType="{x:Type TextBox}">

    <Setter Property="Background" Value="White"/>
    <Setter Property="Foreground" Value="Black"/>
    <Setter Property="FontSize" Value="{StaticResource NormalFontSize}"/>
    <Setter Property="FontWeight" Value="Normal"/>
    <Setter Property="FontStyle" Value="Normal"/>
    <Setter Property="FontFamily" Value="{StaticResource FontFamilyName}"/>
    <Setter Property="HorizontalAlignment" Value="Stretch"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="TextAlignment" Value="Center"/>
    <Setter Property="HorizontalContentAlignment" Value="Left"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="TextBox">
                <ControlTemplate.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Background" Value="{StaticResource listItemHighlightBackground}"/>
                        <Setter Property="Foreground" Value="{StaticResource disabledArrowBackground}"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

</Style>
Run Code Online (Sandbox Code Playgroud)

当我使用触发器时,文本框消失

怎么了

谢谢

kar*_*fus 5

ControlTemplate 替换该控件类型的模板。您似乎误解了它的用法。在触发器之前,尝试添加一些要显示的视觉对象(例如边框),该对象将出现。更好的是,根本不使用ControlTemplate ...您只需要在样式上设置属性触发器,例如:

<Style.Triggers>
    <Trigger Property="IsEnabled" Value="false">
        <Setter Property = "Foreground" Value="Green"/>
    </Trigger>
</Style.Triggers>
Run Code Online (Sandbox Code Playgroud)