1

犬のリストと猫のリストがあります。同じコンボボックスに犬と猫のリストを表示したいと思います。しかし、私はそれらを区別したいと思います。

例えば。犬のリストを表示する前に、「犬」という別のフォントの色で「選択不可のアイテム」と呼び、次に犬のリストと呼びましょう。犬のリストの後に、別のフォントの色の別​​の「選択できないアイテム」が「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

I would suggest creating an interface that both the dogs and cats implement. Then bind to a collection of these objects and use xaml to change the appearance based on the type of object it is.

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);
    }
}

Then in your XAML bind to the List (or use observable collection for auto prop updating)

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

And then create a style to change the look based on your data.

<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 に答える