gpt4 book ai didi

c# - WPF:ComboBox 中的多种前景色

转载 作者:行者123 更新时间:2023-11-30 14:57:17 24 4
gpt4 key购买 nike

在 XAML 中,我们可以为 ComboBox 中的每个项目设置特定的属性,例如:

<ComboBoxItem Foreground="Blue" Background="AntiqueWhite" Content="First Item"/>
<ComboBoxItem Foreground="Yellow" Background="Red" Content="Second Item"/>

当我在从代码动态填充 ComboBox 时尝试执行此操作时,ComboBox .Foreground 属性为所有项目设置前景值。我想知道是否有在代码中实现这一点(为不同的项目设置不同的前景色)。

例如:

ComboBox1[First Item].Foreground = Brushes.Red;
ComboBox1[Second Item].Foreground = Brushes.Blue;

最佳答案

尝试将 ComboBox 的 Item 转换为 ComboBoxItem 类型,然后设置它的 Foreground 属性而不是整个 ComboBox 的 Foreground :

((ComboBoxItem)ComboBox1.Items[0]).Foreground = Brushes.Red;

更新:

如果您以这种方式从代码向 ComboBox1 添加新项目:

ComboBox1.Items.Add(new ComboBoxItem {Content = "Third Item"});

转换会很好地工作,因为上面的代码类似于您在问题中显示的 XAML 对应代码。但是,如果您改为这样做:

ComboBox1.Items.Add("Third Item");

转换是行不通的。因为该代码将字符串添加到 ComboBox Item 而不是 ComboBoxItem 对象。在这种情况下,获取 ComboBoxItem 并不那么简单,您需要使用 ItemContainerGenerator 获取它,如下所示:

var comboBoxItem = (ComboBoxItem)ComboBox1.ItemContainerGenerator.ContainerFromItem(ComboBox1.Items[0]);
comboBoxItem.Foreground = Brushes.Red;

关于c# - WPF:ComboBox 中的多种前景色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21068742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com