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

3

我有一个Combobox,里面只有三个项目:计划、进展和完成。

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

如何根据所选项更改ComboBox的背景颜色(其默认为渐变)。

例如:计划为紫色,进展为蓝色,完成为绿色。

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

谢谢

1个回答

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

也可以通过在Style.Triggers上设置多个DataTrigger来完成,如下所示:

<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>

有关DataTriggers的更多信息:

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


谢谢,但是有没有通过XAML的方式来实现呢? - High
@High,我添加了如何使用XML进行操作的方法。 - I.B
我是WPF的新手,这对我来说非常有价值,谢谢。 - High
XAML在Windows 10机器上的VisualStudio 2019似乎无法正常工作。代码可以运行,但是没有显示任何颜色。 - Adephx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接