1

我有一张狗的名单和一张猫的名单。我想在同一个组合框中显示狗和猫的列表。但是我想区分它们。

例如。在我放置狗列表之前,它应该出现一个,让我们用不同的字体颜色将其称为“不可选择项”,上面写着“DOGS”,然后是狗列表。在狗列表之后,另一个字体颜色不同的“不可选择项目”应该是“CATS”,然后是猫列表。

有谁知道如何做到这一点?我一直在寻找,但找不到可以做到这一点的房产。

4

2 回答 2

2

用于ComboBoxItem您的“标题”条目。例如:

ComboBoxItem CBI = new ComboBoxItem();
CBI.Content = "DOGS";
CBI.IsEnabled = false;
CBI.Background = Brushes.Aqua;
comboBox1.Items.Add(CBI);
//Add dogs here
于 2012-05-16T22:19:09.423 回答
1

我建议创建一个狗和猫都实现的接口。然后绑定到这些对象的集合,并使用 xaml 根据对象的类型更改外观。

public enum AnimalType
{
    Dog,
    Cat
}
public interface Animal
{
    AnimalType animal { get; set; }
    string Name { get; set; }
}

public class Cat : Animal
{
    public AnimalType animal { get; set; }
    public string Name { get; set; }

    public Cat()
    {
        animal = AnimalType.Cat;
    }
}


public class Dog : Animal
{
    public AnimalType animal { get; set; }
    public string Name { get; set; }

    public Dog()
    {
        animal = AnimalType.Dog;
    }
}

public class MyViewModel
{
    public List<Animal> MyAnimals { get; set; }

    public MyViewModel()
    {
        MyAnimals = new List<Animal>();

        var a = new Dog();
        var b = new Cat();

        MyAnimals.Add(a);
        MyAnimals.Add(b);
    }
}

然后在您的 XAML 中绑定到列表(或使用可观察的集合进行自动道具更新)

<ComboBox ItemsSource="{Binding Path=MyAnimals}" Style="{StaticResource MyCombo}">

然后创建一种样式以根据您的数据更改外观。

<Style TargetType="ComboBox" x:Key="MyCombo">
                <Style.Triggers>
                    <DataTrigger Binding="AnimalType" Value="Dog">
                        <Setter Property = "Foreground" Value="Green"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
于 2012-05-17T00:55:36.443 回答