【发布时间】:2018-09-21 19:10:50
【问题描述】:
我在我的网格中添加了一个 GridImageColumn,并正在向它添加一个图像。似乎列的宽度(当我设置 ColumnSizer="Auto" 时)被设置为我正在从中获取图像的 url 的长度,而不是实际的图像大小。如果我使用一些非常短的 url,那么列的宽度也非常小。
这是预期的吗?我是否需要明确设置列的宽度?我想要的是让列自动成为列中最宽图像的宽度。
这是网格:
<syncfusion:SfDataGrid x:Name="dataGrid" ItemsSource="{Binding TestItems}" ColumnSizer="Auto">
<syncfusion:SfDataGrid.Columns>
<syncfusion:GridImageColumn
MappingName="TEST"
HeaderText="TEST"
Stretch="None"
TextAlignment="Center"
ValueBinding="{Binding Path=ImagePath, Converter={StaticResource StringToImageConverter}}" />
</syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>
这里是 StringToImageConverter。它只是获取 BitmapImage 并返回它:
class StringToImageConverter : IValueConverter
{
private const string UriPrefix = "https://www.someprefix.com";
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
string imageName = value is string ? UriPrefix + value : string.Empty;
return new BitmapImage(new Uri(imageName, UriKind.RelativeOrAbsolute));
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return null;
}
}
它看起来像这样(图像的宽度为 112,url 很长,基本上和下面屏幕截图中的列一样宽):
【问题讨论】:
标签: c# wpf syncfusion