我有这样的xaml:
<Image Source="{Binding MyImage}" />
默认情况下Source属性(没有单独的转换器)可以绑定到哪种类型的最佳文档?
奖金:
.NET版本有差异吗?
我不想将XAML绑定到viewmodel。所以请不要像“Image.Source = ...;”这样的代码绑定。
到目前为止我发现了什么:
常识答案:
MSDN文档几乎没用:
Source Property:获取或设置图像的ImageSource。
XAML值
imageUri
System.String
图像文件的URI
我找到的最有用的答案是.net源代码ImageSourceConverter.cs:
答案 0 :(得分:0)
ImageSourceConverter的想法是正确的。一种可能的方法是实现您自己的Converter以支持不同类型的源。为此,我们必须编写一个转换器,它将不同类型转换为ImageSource类型的对象。这是第一种方法:
[ValueConversion(typeof(object), typeof(ImageSource))]
public class CustomImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
ImageSource returnSource = null;
if (value != null)
{
if (value is byte[])
{
//Your implementation of byte[] to ImageSource
returnSource = ...;
}
else if (value is Stream)
{
//Your implementation of Stream to ImageSource
returnSource = ...;
}
...
}
return returnSource;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
通过使用此Converter的实例,您可以将不同的源类型作为对象传递给Image:
<Image Source="{Binding MyImage, Converter={StaticResource MyCustomImageConverter}}"/>