checkcombobox цвет фона предметов - PullRequest
0 голосов
/ 15 мая 2018

Я создаю приложение в c # и wpf.Есть ли способ сделать checkcombobox из этого пространства имен xctk = "http://schemas.xceed.com/wpf/xaml/toolkit" с разными цветами в каждом элементе.

enter image description here

У меня есть ObservableCollection<Item> Items, которыйпривязан к checkComboBox. В классе Item есть поле: Цветовой цвет, какой цвет я хочу показать.

<xctk:CheckComboBox Name="CheckComboBox"  ItemsSource="{Binding Items}" FontFamily="Times New Roman" FontSize="20" Margin="190,553,254,126"   />

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Я не знаю структуру xceed CheckComboBox, но вот идея должна работать.Фрист, найдите корневой элемент, который отвечает за каждый элемент, связанный с CheckComboBox.Затем напишите цель Style в CheckComboBox.Resources для типа этого элемента, чтобы переопределить его свойство Background с помощью SolidBrush, который имеет цвет в элементе через Binding.И при необходимости переопределите другие визуальные свойства, такие как Margin, HorizontalAlignment ect.Если мы сделаем это с ComboBox, оно должно выглядеть так:

<ComboBox ItemSource="{Binding Items}">
    <ComboBox.Resources>
        <Style TargetType="ComboBoxItem">
            <Setter Property="Backgournd">
                <Setter.Value>
                    <SolidColorBrush Color="{Binding RelativeSource=
                    {RelativeSource AncestorType=ComboBoxItem},
                    Path=Content.Color}"/>
                </Setter.Value>
            </Setter>
            <Setter Property="Margin" Value="-1 -1"/>
        </Style>
    </ComboBox.Resources>
</ComboBox>
0 голосов
/ 15 мая 2018

Вы можете сделать это, используя ObservableCollection в качестве источника элементов или добавляя один за другим ComboboxItems в ваш комбинированный список.

Вы можете изменить свойства вашего comboboxitem.

ComboboxItem item = new ComboboxItem();
item.Content = "Item1";
item.Tag = "Any value"; You can assign any object and use for exemple in selection change event.
item.Background = new SolidColorBrush(Colors.Red);
myCombobox.Items.Add(item);

или

ObservableCollection<ComboboxItem> myList = new ObservableCollection<ComboboxItem>();

  ComboboxItem item = new ComboboxItem();
item.Content = "Item1";
item.Tag = "Any value"; You can assign any object and use for exemple in selection change event.
item.Background = new SolidColorBrush(Colors.Red);
myList.Add(item);

myCombobox.ItemsSource = myList;

В этом случае вы можете использовать SelectedItem для получения нужного значения:

 if(myCombobox.SelectedItem != null)
  {
   var myObject = (myCombobox.SelectedItem as ComboboxItem).Tag as MyObject; //My object can be any type.
   var idValue = myObject.ID;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...