在DataGrid列标题中显示图像和标签

时间:2013-12-09 07:51:55

标签: wpf wpfdatagrid

我有DataGrid之前我只使用以下Style在列标题中显示图片/图标。

            <Style  TargetType="DataGridColumnHeader" >
                <Setter Property="ContentTemplate" >
                    <Setter.Value>
                        <DataTemplate >
                            <StackPanel Orientation="Horizontal">
                                <Image Source="{Binding Converter={StaticResource StrToImageConverter}}" />
                            </StackPanel>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

我在我的DataTable

中将图片路径作为列名传递
    string colName; // Some file path
    DataColumn c = new DataColumn(colName) { DataType = typeof(string) };
    dt.Columns.Add(c);

StrToImageConverter将其转换为位图。

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        ImageSource result = null;
        string path = (string)value;

        if (!string.IsNullOrEmpty(path))
            result = new BitmapImage(new Uri(path));

        return result;
    }

但是现在我还必须将列名称与文本一起显示为文本。我可以在图片旁边的TextBlock中添加StackPanel,但我不确定如何将数据传递给它,或者它是最好的方法。

任何帮助都会非常感激。

由于

1 个答案:

答案 0 :(得分:0)

如果您的基础ItemsSource对象包含属性,则只需将Text与该属性绑定即可。

但是从您的问题可以看出,您正在使用DataTable绑定它。您可以在DataTable中add another columnHeaderName并与之绑定 -

<StackPanel Orientation="Horizontal">
    <Image Source="{Binding Converter={StaticResource StrToImageConverter}}"/>
    <TextBlock Text="{Binding HeaderName}"/>
</StackPanel>