C# 禁用列表框时更改背景色

C# 禁用列表框时更改背景色,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我有一个ListBox,当ListBox被禁用并且样式变量为负或正时,我想更改背景颜色,初始值,我做了如下操作: //--------------更新-------------- <ListBox> <ListBox.Style> <Style TargetType="{x:Type ListBox}"> <Style.Triggers> <MultiDataTr

我有一个ListBox,当ListBox被禁用并且样式变量为负或正时,我想更改背景颜色,初始值,我做了如下操作:

//--------------更新--------------

<ListBox>
    <ListBox.Style>
        <Style TargetType="{x:Type ListBox}">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsEnable}" Value="False"/>
                        <Condition Binding="{Binding Path=Style}" Value="Negative"/>
                    </MultiDataTrigger.Conditions>
                    <Setter Property="Background" Value="Black" />
                </MultiDataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsEnable}" Value="False"/>
                        <Condition Binding="{Binding Path=Style}" Value="Positive"/>
                    </MultiDataTrigger.Conditions>
                    <Setter Property="Background" Value="Yellow" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </ListBox.Style>
</ListBox>
<StackPanel>
    <ListBox IsEnabled="{Binding ElementName=enabledButton, Path=IsChecked}">
        <ListBox.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Red" />
        </ListBox.Resources>
        <ListBoxItem>Item 1</ListBoxItem>
        <ListBoxItem>Item 2</ListBoxItem>
        <ListBoxItem>Item 3</ListBoxItem>
        <ListBoxItem>Item 4</ListBoxItem>
        <ListBoxItem>Item 5</ListBoxItem>
    </ListBox>
    <ToggleButton Name="enabledButton" IsChecked="True" Content="IsEnabled"/>
</StackPanel>
但是,不起作用,ListBox无法通过上述解决方案更改背景颜色,所以我做了如下操作: //--------------结束更新--------------

<ListBox>
    <ListBox.Style>
        <Style TargetType="{x:Type ListBox}">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsEnable}" Value="False"/>
                        <Condition Binding="{Binding Path=Style}" Value="Negative"/>
                    </MultiDataTrigger.Conditions>
                    <Setter Property="Background" Value="Black" />
                </MultiDataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsEnable}" Value="False"/>
                        <Condition Binding="{Binding Path=Style}" Value="Positive"/>
                    </MultiDataTrigger.Conditions>
                    <Setter Property="Background" Value="Yellow" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </ListBox.Style>
</ListBox>
<StackPanel>
    <ListBox IsEnabled="{Binding ElementName=enabledButton, Path=IsChecked}">
        <ListBox.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Red" />
        </ListBox.Resources>
        <ListBoxItem>Item 1</ListBoxItem>
        <ListBoxItem>Item 2</ListBoxItem>
        <ListBoxItem>Item 3</ListBoxItem>
        <ListBoxItem>Item 4</ListBoxItem>
        <ListBoxItem>Item 5</ListBoxItem>
    </ListBox>
    <ToggleButton Name="enabledButton" IsChecked="True" Content="IsEnabled"/>
</StackPanel>
这是工作!禁用时,ListBox可以将背景颜色更改为红色

但是,我需要添加一个条件:

-如果样式为负样式=负,则列表框将颜色更改为黑色

-如果样式为正样式=正,则列表框的颜色将更改为黄色

我试图使用触发器,但没有成功。
任何人都有一个简单的方法来实现这一点吗?

你所说的“风格=负面”到底是什么意思?此外,您还应该发布实际更改背景的代码。如果愿意,您可以更改模板以更改所有颜色。@nuke感谢您的回复,Style是一个字符串变量。请查看我更新的问题,可能会更清楚。对不起,我的英语不好ồng Hữ您是否考虑过使用多触发器而不是MutlidatTrigger?另外,您发布的代码显示Path=IsEnable,这可能应该是Path=IsEnabled。您还可以考虑在绑定中使用转换器。