C# 禁用列表框时更改背景色
我有一个ListBox,当ListBox被禁用并且样式变量为负或正时,我想更改背景颜色,初始值,我做了如下操作: //--------------更新--------------C# 禁用列表框时更改背景色,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我有一个ListBox,当ListBox被禁用并且样式变量为负或正时,我想更改背景颜色,初始值,我做了如下操作: //--------------更新-------------- <ListBox> <ListBox.Style> <Style TargetType="{x:Type ListBox}"> <Style.Triggers> <MultiDataTr
<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。您还可以考虑在绑定中使用转换器。