使用代码wpf在组合框中绑定颜色

时间:2014-09-29 11:20:38

标签: c# wpf combobox

首先抱歉我的英语。我正在动态生成包含列和行的数据网格。我用这种方式生成的每一列:

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

我在finalLsit的项目中有一个属性,它具有颜色的hexa代码。我需要在组合框中设置一个项目的背景,并根据该代码设置一些颜色。

编辑:我需要从代码中执行此操作,例如设置与frameElementFactory的绑定。我不能在XAML中这样做,因为它是动态的,也许我必须创建3列,只有一个有这个绑定,所以我必须以编程方式进行。

1 个答案:

答案 0 :(得分: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>

希望这有帮助