在datagrid中的组合框列中显示图像

时间:2011-02-14 19:55:06

标签: wpf silverlight data-binding datagrid

我希望在数据网格中有一个组合框来显示实际图像列表,而不是文本。

我可以通过手动构建组合框来完成这项工作,但似乎无法通过绑定(这是数据网格可以使用的唯一方式)来实现。

我还尝试了template column,,但得到了相同的结果 - 显示图像类名称的文本列表。有证据表明这个吗?

1 个答案:

答案 0 :(得分:3)

如果ComboBox显示的班级名称设置为ComboBox.ItemTemplate,则可以根据需要嵌套任意数量的模板。在这里,我假设MyImageListImageSource个对象组成(需要一些更大的规范):

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding MyImageList}">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <Image Source="{Binding}"/>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

另外,您也可以使用DataGridComboBoxColumn,只需使用CellStyle设置可以显示图片的DataTemplate

<DataGridComboBoxColumn ItemsSource="{Binding MyImageList}">
    <DataGridComboBoxColumn.CellStyle>
        <Style TargetType="ComboBox">
            <Setter Property="ItemTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <Image Source="{Binding}"/>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGridComboBoxColumn.CellStyle>
</DataGridComboBoxColumn>