C# 如何使用触发器更改ListBox元素的文本颜色?

C# 如何使用触发器更改ListBox元素的文本颜色?,c#,wpf,winforms,xaml,wpf-controls,C#,Wpf,Winforms,Xaml,Wpf Controls,我有一个ListBox SurfaceListBox,当元素在特定属性上有false时,我需要更改元素的文本颜色 看看我的代码,这很好: <DataTrigger Binding="{Binding IsSelectable}" Value="False"> 但是使用以下方法设置颜色: <Setter Property="Foreground" Value="Black"/> 不起作用,颜色也不会改变 有没有办法解决这个问题,或者其他的方法 <Style x:K

我有一个ListBox SurfaceListBox,当元素在特定属性上有false时,我需要更改元素的文本颜色

看看我的代码,这很好:

<DataTrigger Binding="{Binding IsSelectable}" Value="False">
但是使用以下方法设置颜色:

<Setter Property="Foreground" Value="Black"/>
不起作用,颜色也不会改变

有没有办法解决这个问题,或者其他的方法

<Style x:Key="CategorySurfaceListBoxItemStyle"
        TargetType="{x:Type Custom:SurfaceListBoxItem}"
        BasedOn="{StaticResource ControlBaseStyle}">

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Custom:SurfaceListBoxItem}">
                <Grid
                    x:Name="Grid"
                    Background="{StaticResource ControlHitAreaBrush}"
                    SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
                    <ContentPresenter x:Name="Content" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <!-- Disable dot items -->
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsSelectable}" Value="False">
            <Setter Property="IsEnabled" Value="False"/>
            <Setter Property="Foreground" Value="Black"/> <!--PROBLEM HERE-->
        </DataTrigger>
    </Style.Triggers>
</Style>

我能够通过以下方式解决问题:

删除任何将设置前景颜色的样式,以避免覆盖颜色。 使用 以下代码:

    <Style.Triggers>
        <!-- Disable dot items and style -->
        <DataTrigger Binding="{Binding IsSelectable}" Value="False">
            <Setter Property="IsEnabled" Value="False"/>
            <Setter Property="Foreground" Value="Black"/>
        </DataTrigger>
        <!-- Enable other elements and style -->
        <DataTrigger Binding="{Binding IsSelectable}" Value="True">
            <Setter Property="IsEnabled" Value="True"/>
            <Setter Property="Foreground" Value="#1799c3"/>
        </DataTrigger>
    </Style.Triggers>

你是否也在其他地方设置前景属性?在格式化修复后,前景属性现在显示在问题中。是的,我有另一种样式。基本上每个项目都有一种颜色,我只需要覆盖一些具有特定属性的元素是的-你忘记了触发器的“True”条件-你的触发器只在False条件下工作。当这是真的时,heppend是什么。您应该添加此案例。感谢Jasper的评论,真实情况的案例已呈现,请查看。谢谢