我有一个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;。
我试图使用触发器,但不成功。 任何人都有一个简单的方法让这个工作?