我有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
,但我不确定如何将数据传递给它,或者它是最好的方法。
任何帮助都会非常感激。
由于
答案 0 :(得分:0)
如果您的基础ItemsSource对象包含属性,则只需将Text与该属性绑定即可。
但是从您的问题可以看出,您正在使用DataTable绑定它。您可以在DataTable中add another column
说HeaderName
并与之绑定 -
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Converter={StaticResource StrToImageConverter}}"/>
<TextBlock Text="{Binding HeaderName}"/>
</StackPanel>