我有一个DataGrid,其中一列是DataGridComboBoxColumn。对于这些组合框中的项,我需要显示一个图像和一些文本。下面是我能够做的。但是初始绑定不起作用。一旦我在组合框中选择了一项,所有组合框中的图像都会消失。
我所做的是正确的吗?让它与我所缺少的某种触发器或绑定一起工作?或者有没有更好的方法在datagrid的组合框中同时显示图像和文本?
<DataGridComboBoxColumn Header="Status" SelectedValueBinding="{Binding Status}" SelectedItemBinding="{Binding Status}" SelectedValuePath="Tag" xmlns:s="clr-namespace:System;assembly=mscorlib"
>
<DataGridComboBoxColumn.ItemsSource>
<x:Array Type="{x:Type StackPanel}">
<StackPanel Orientation="Horizontal">
<Image Source="{DynamicResource DispatchedImage}">
</Image>
<TextBlock Text="DISP"/>
<StackPanel.Tag>
<s:String>"1"</s:String>
</StackPanel.Tag>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Source="{DynamicResource ConfirmedImage}">
</Image>
<TextBlock Text="CONF"/>
<StackPanel.Tag>
<s:String>"2"</s:String>
</StackPanel.Tag>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Source="{DynamicResource PickedUpImage}">
</Image>
<TextBlock Text="P/U"/>
<StackPanel.Tag>
<s:String>"3"</s:String>
</StackPanel.Tag>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Source="{DynamicResource DeliveredImage}">
</Image>
<TextBlock Text="DEL"/>
<StackPanel.Tag>
<s:String>"4"</s:String>
</StackPanel.Tag>
</StackPanel>
</x:Array>
</DataGridComboBoxColumn.ItemsSource>
</DataGridComboBoxColumn>
1条答案
按热度按时间erhoui1w1#
您应该将
ComboBox
的ItemsSource
绑定到IEnumerable<T>
,其中T
是一个类型,它具有display值和id值的属性:将以下属性添加到视图模型中:
...并使用
ItemTemplate
:有关详细信息,请参阅docs中的数据模板部分。