WPF ComboBox颜色项目根据属性Mvvm

时间:2018-04-19 11:41:54

标签: c# wpf xaml

嗨,我有一个简单的问题。

我有一个基于Dictionary

的组合框

组合框:

<ComboBox SelectedValuePath="Key" DisplayMemberPath="Value.ModuleName" 
    controls:TextBoxHelper.Watermark="All" Height="2"ItemsSource="{Binding Modules}"/>

模块ID字典:

public Dictionary<string, ModulesModel> Modules { get; set; }

ModulesModel和modules模型只是:

public class ModulesModel
{
    public byte ModuleId { get; set; }
    public string ModuleName { get; set; }
    public bool IsWarning { get; set; }
}

所以组合框填充不错,但现在我正在尝试将组合框项目的背景颜色设置为警告设置为true,到目前为止我试过了

<ComboBox.ItemTemplate>

 <DataTemplate>
     <DataTemplate.Triggers>
        //NOW HOW TO BING Value.IsWarning?
     </DataTemplate.Triggers>
 </DataTemplate>

 </ComboBox.ItemTemplate>

没有运气,有办法吗?

1 个答案:

答案 0 :(得分:3)

使用ItemContainerStyle代替ItemTemplate

<ComboBox SelectedValuePath="Key" DisplayMemberPath="Value.ModuleName" 
    controls:TextBoxHelper.Watermark="All" Height="2"ItemsSource="{Binding Modules}">
            <ComboBox.ItemContainerStyle>
                <Style TargetType="ComboBoxItem">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=IsWarning }" Value="True">
                            <Setter Property="Backgroupd" Value="Blue" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ComboBox.ItemContainerStyle>
        </ComboBox>