不同选定项目的WPF组合框背景

时间:2017-03-30 16:25:51

标签: c# wpf combobox styles

我有只有3项的Combobox:Planing,Progress and Done,

<ComboBox SelectedIndex="0>
    <ComboBoxItem Content="Planing"/>
    <ComboBoxItem Content="Progress"/>
    <ComboBoxItem Content="Done"/>
</ComboBox>

如何更改ComboBox的背景颜色(由defult Gradiant决定)取决于选择了哪个项目。

例如:紫色表示刨光,蓝色表示进度,绿色表示完成。

注意:我的意思是ComboBox背景,而不是ComboBox项目列表。

由于

1 个答案:

答案 0 :(得分:4)

1)使用selectionChanged事件

您可以在comboBox_SelectionChanged事件

中进行设置
private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (comboBox.SelectedItem.ToString() == "Planning")
    {
        comboBox.Background = Brushes.Purple;
    }
    else if (comboBox.SelectedItem.ToString() == "Progress")
    {
        comboBox.Background = Brushes.Blue;
    }
    else if (comboBox.SelectedItem.ToString() == "Done")
    {
        comboBox.Background = Brushes.Green;
    }
}

每次更改组合框中的选定值时,都会调用comboBox_SelectionChanged事件。在其中,您可以简单地验证所选项目的值并应用您想要的颜色。

这将是Combobox

的xaml
<ComboBox x:Name="comboBox" SelectionChanged="comboBox_SelectionChanged"/>

2)在XAML中使用DataTriggers

也可以通过xaml在DataTrigger上设置多个Style.Triggers来完成

<ComboBox x:Name="mycombobox">
    <ComboBox.Style>
        <Style TargetType="{x:Type ComboBox}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=SelectedItem.Content, ElementName=mycombobox}" Value="Planning">
                    <Setter Property="Background" Value="Purple" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=SelectedItem.Content, ElementName=mycombobox}" Value="Progress">
                    <Setter Property="Background" Value="Blue" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=SelectedItem.Content, ElementName=mycombobox}" Value="Done">
                    <Setter Property="Background" Value="Green" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
    <ComboBoxItem Content="Planning"/>
    <ComboBoxItem Content="Progress"/>
    <ComboBoxItem Content="Done"/>
</ComboBox>

More information on DataTriggers:

  

表示在绑定数据满足指定条件时应用属性值或执行操作的触发器。