如何设置默认图像
本文关键字:默认 图像 设置 何设置 | 更新日期: 2023-09-27 17:57:36
DataGrid:
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Tag="{Binding photo}" MinWidth="50" Source="{Binding photo, Converter={StaticResource ConvertNullImageKey}}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
转换器如果值不是uri,则从ImageResource.noimage返回iamage。但是这个位图。。。如何在位图上返回URI?
public class ConvertNullImage : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
try
{
Uri uri = new Uri(value.ToString(), UriKind.Relative);
return uri;
}
catch { return new Uri(ImageResource.noimage); }
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
Image.Source
属性的类型不是Uri
,而是ImageSource
,请参阅MSDN:
http://msdn.microsoft.com/en-us/library/system.windows.controls.image.source%28VS.95%29.aspx
当您在XAML中设置Image.Source
时,XAML解析器会巧妙地将您的URI转换为ImageSource
。
因此,您需要在您的值转换器中创建一个BitmapImage
。请参阅此相关问题:
图像UriSource和数据绑定
Image
的Source
属性需要ImageSource
,而不是URI。多亏了TypeConverter,这在xaml中可以工作。您可以从路径创建一个BitmapImage并返回,如图所示。
如果我理解正确的话,问题的第二部分是您想要绑定(作为默认值)到Resource文件中的图像。如果是这样的话,这里有一篇关于如何在MSDN 上做到这一点的文章
希望这有帮助:)