禁用列表框时更改背景颜色

时间:2014-11-27 14:44:07

标签: c# .net wpf xaml

我有一个ListBox,我希望在ListBox被禁用时更改背景颜色,而Style变量是" Negative"或"肯定",初始,我做如下:

// ----------------------------修订---------------- ------------

<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>

但是,没有工作,ListBox不能通过上面的解决方案改变背景颜色,所以我做了如下: // ---------------------------- END UPDATED ------------------ ----------

<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可以在禁用时将背景颜色更改为红色。

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

- 如果样式为负(Style =&#34; Negative&#34;),ListBox将颜色更改为&#34; Black&#34;。

- 如果样式为正(Style =&#34; Positive&#34;),ListBox将颜色更改为&#34;黄色&#34;。

我试图使用触发器,但不成功。 任何人都有一个简单的方法让这个工作?

0 个答案:

没有答案