Я пытаюсь связать массив байтов от моей базы данных к изображению WPF.
Мой XAML:
<Window.Resources>
<local:BinaryImageConverter x:Key="imgConverter" />
</Window.Resources>
...
<Image Source="{Binding Path=ImageData, Converter={StaticResource imgConverter}}" />
Я изменил код, опубликованный Райан Кромвелл для конвертера значений:
Class BinaryImageConverter
Implements IValueConverter
Private Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
If value IsNot Nothing AndAlso TypeOf value Is Byte() Then
Dim bytes As Byte() = TryCast(value, Byte())
Dim stream As New MemoryStream(bytes)
Dim image As New BitmapImage()
image.BeginInit()
image.StreamSource = stream
image.EndInit()
Return image
End If
Return Nothing
End Function
Private Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New Exception("The method or operation is not implemented.")
End Function
End Class
Линия я mage.EndInit()
функции BinaryImageConverter Convert() выдает это NotSupportedException:
"Никакой компонент изображения, подходящий для завершена эта операция."
InnerException: "Исключение из HRESULT: 0x88982F50"
Я не понимаю, что я делаю неправильно. Как я могу заставить это работать?
Update
Кажется, проблема заключалась в том, что байты выходят из базы данных. Должна была быть проблема с тем, как я их вставлял.
См. мой рабочий код ниже.