2014-09-29 3 views
0

Прежде всего, извините за мой английский. Я генерирую datagrid с колонками и строками динамически. Каждый столбец я произвожу так:Связывание цвета в combobox от кода wpf

FrameworkElementFactory frameElementFactory = 
    new FrameworkElementFactory(typeof(ComboBox)); 
itemsSourceBinding.Source = finalList; 
frameElementFactory.SetBinding(ComboBox.ItemsSourceProperty, itemsSourceBinding); 

У меня есть собственность на предметы finalLsit, что имеет гексабензилоксикарбониламина код цвета. Мне нужно установить фон элемента в поле со списком с некоторым цветом в зависимости от этого кода.

EDIT: Мне нужно сделать это из кода, например установить привязку к frameElementFactory. Я не могу сделать это в XAML, потому что он динамически, возможно, мне нужно создать 3 столбца и только один с этим связыванием, поэтому я должен делать это программно.

ответ

1

Использование DataTemplate: вы создаете шаблон для отображения своих элементов внутри выпадающего списка. Например, вы создаете текстовую метку для отображения цвета и состыковаетесь слева от выпадающего меню. У вас также должен быть конвертер, готовый к скрытому цвету (IValueConverter).

<DataTemplate DataType="{x:Type ComboBoxItem}"> 
    <DockPanel>   
      <TextBlock Background="{Binding HexaColor}" Width="30" DockPanel.Dock="Left" /> 
      ..... 
    </DockPanel> 
</DataTemplate> 

Или вы просто установите ресурс в выпадающий список:

<ComboBox ItemsSource="{Binding finalList}"> 
    <ComboBox.Resources> 
     <Style TargetType="{x:Type ComboBoxItem}"> 
      <Setter Property="Background" Value="{Binding ....}"/> 
     </Style> 
    </ComboBox.Resources> 
</ComboBox> 

Надеется, что это помогает

+0

, но мне нужно сделать это из кода .. это мой XAML: ' ' – user3284892

Смежные вопросы