首先抱歉我的英语。我正在动态生成包含列和行的数据网格。我用这种方式生成的每一列:
FrameworkElementFactory frameElementFactory =
new FrameworkElementFactory(typeof(ComboBox));
itemsSourceBinding.Source = finalList;
frameElementFactory.SetBinding(ComboBox.ItemsSourceProperty, itemsSourceBinding);
我在finalLsit的项目中有一个属性,它具有颜色的hexa代码。我需要在组合框中设置一个项目的背景,并根据该代码设置一些颜色。
编辑:我需要从代码中执行此操作,例如设置与frameElementFactory的绑定。我不能在XAML中这样做,因为它是动态的,也许我必须创建3列,只有一个有这个绑定,所以我必须以编程方式进行。答案 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>
希望这有帮助