У меня есть ComboBox, основанный на данных XML файла:WPF: ComboBoxItem фон
<Root>
<Node Background="Yellow" Foreground="Cyan" Image="1.ico" Property="aaaa" Value="28" />
<Node Background="SlateBlue" Foreground="Black" Image="2.ico" Property="bbbb" Value="2.5" />
<Node Background="Teal" Foreground="Green" Image="3.ico" Property="cccc" Value="4.0" />
<Node Background="Yellow" Foreground="Red" Image="4.ico" Property="dddd" Value="0" /></Root>
Таким образом, в данном случае, мне нужно создать соединение ComboBoxItem, когда каждый элемент имеет подходящий фон.
Я пытался сделать что-то вроде этого:
<UserControl.Resources>
<DataTemplate DataType="Node">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="20"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto" MinWidth="20"/>
</Grid.ColumnDefinitions>
<Border Background="{Binding [email protected]}" Grid.Column="0">
<Image Source="{Binding [email protected]}"
Width="16"
Height="16"
Margin="3" />
</Border>
<Border Background="{Binding [email protected]}" Grid.Column="1">
<TextBlock Foreground="{Binding [email protected]}"
Margin="3"
Text="{Binding [email protected]}" />
</Border>
<Border Background="{Binding [email protected]}" Grid.Column="2">
<TextBlock Foreground="{Binding [email protected]}"
Margin="3"
FontWeight="Bold"
Text="{Binding [email protected]}" />
</Border>
</Grid>
</DataTemplate>
<XmlDataProvider x:Key="xmlNodeList"
Source="/data/Combo.xml"
XPath="/Root/Node"/>
</UserControl.Resources>
<ComboBox Name="myComboBox"
ItemsSource="{Binding Source={StaticResource xmlNodeList}}"
SelectedIndex="0" />
, но это не выглядит хорошо :-(
Какое решение вы рекомендуете
Заранее спасибо
Hello Denis, Благодарим за отзыв! Я попробовал свои предложения, но: 1. ItemTemplate = "{StaticResource Node}" генерирует ошибку во время выполнения: Не удается найти метод() ресурс с именем '{Node}' в InitializeComponent 2. Добавлен стиль ничего не изменилось 3. Одна из проблем, возникающих при наведении мыши на ComboboxItems, выделяется под Grid – user83493
. Обратите внимание на мое замечание, в котором говорится, что вам нужно указать ax: Key = «Node», а не DataType = «Node» на ваш DataTemplate. Это источник ошибки. –
Я обновил свой ответ, чтобы включить полный шаблон, я понятнее. –