我有一个绑定到列表的ComboBox
。 ComboBox
包含该列表中的3个ComboBoxItem。我也有一个CheckBox
。如果未选中CheckBox
,并且选择了第一个ComboBoxItem,则我的视图模型中的属性“ Property1”将设置为false。现在,如果“ Property1”为false,我想更改此ComboBoxItem的背景和前景。我该如何实现?
我试图用Style和MultiDataTrigger完成该操作,但没有成功-我只设法更改了所有ComboBoxItem的样式,而不是特定的样式。
<Style TargetType="ComboBoxItem">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=SelectedComboBoxItem}" Value="Item1" />
<Condition Binding="{Binding Path=CheckStatus}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="GhostWhite" />
<Setter Property="Foreground" Value="Gainsboro" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
如何通过列表绑定特定ComboBoxItem的样式?
感谢您的提示/帮助。
答案 0 :(得分:0)
这可能不是最佳解决方案,而是可行的解决方案:
我没有使用样式,而是创建了一个带有ItemTemplate的组合框
<ComboBox Width="200" Height="30" ItemsSource="{Binding SimpleList, UpdateSourceTrigger=PropertyChanged}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Name}" Background="{Binding BackGround}" Foreground="{Binding ForeGround}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我的SimpleList包含3个“ SimpleObjects”,它们具有Name,BackGround和ForeGround的属性。默认情况下,BackGround设置为白色,ForeGround设置为黑色。
一旦选中我的CheckBox,我将获得列表的第一项并更改其属性。
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
SimpleObject obj = SimpleList.FirstOrDefault();
obj.BackGround = new SolidColorBrush(Colors.Black);
obj.ForeGround = new SolidColorBrush(Colors.White);
}