数据网格:
<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从Image Resource.no图像返回图像。但是这个位图......如何在位图上返回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();
}
}
答案 0 :(得分:1)
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
。请参阅此相关问题:
答案 1 :(得分:0)
Source
的{{1}}属性需要Image
,而不是URI。由于TypeConverter,这适用于xaml。您可以从路径创建一个BitmapImage,然后返回here。
如果我理解正确,问题的第二部分是你想要(作为默认值)绑定到资源文件中的图像。如果是这样,这里是article on how to do that on MSDN
希望这有助于:)