无法将类型'byte []'隐式转换为'System.Windows.Controls.Image

时间:2013-05-07 08:45:21

标签: c# xaml windows-phone-8

好的,从字节到字符串等都有无数,但我根本无法找到任何关于如何将资源文件转换为视觉工作室,所以很好地转换为字节[]无论我做什么,进入一个普通的图像,所以我可以在我的C#代码中实际使用它?

2 个答案:

答案 0 :(得分:1)

您可以使用valueconverter执行此操作 -

public class InMemoryImageValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var image = new BitmapImage();
        var memoryStream = new MemoryStream((byte[])value);
        image.SetSource(memoryStream);
        return image;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
        return null;
    }
}

改编自https://github.com/slodge/MvvmCross/blob/v3/Plugins/Cirrious/PictureChooser/Cirrious.MvvmCross.Plugins.PictureChooser.WindowsPhone/MvxInMemoryImageValueConverter.cs#L17

然后你可以在Image控件中使用它作为

<Image Source="{Binding TheBytes, Converter={StaticResource InMemoryImage}}" />

答案 1 :(得分:0)

如果您的图像是应用程序的资源,那么您可以执行以下操作

Uri uriR = new Uri("/WP7SampleProject3;component/images/appbar.feature.email.rest.png", UriKind.Relative);
BitmapImage imgSourceR = new BitmapImage(uriR);
this.imageR.Source = imgSourceR;