URI を画像にバインドする作業を行っていますが、バインドは正常に機能しています。問題は、画像がオンザフライで生成され、生成によって例外がスローされる可能性があることです。私はコンバーターを使用していますが、DecodeFailed イベントに適切にアタッチできないようです。これが私のコードです:
Public Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Dim image As New System.Windows.Media.Imaging.BitmapImage()
Try
image = New System.Windows.Media.Imaging.BitmapImage(New Uri(CStr(value)))
AddHandler image.DownloadFailed, AddressOf DecodeFailed
AddHandler image.DecodeFailed, AddressOf DecodeFailed
Catch
Return Windows.DependencyProperty.UnsetValue
End Try
Return image
End Function
Private Sub DecodeFailed(ByVal sender As Object, ByVal e As System.Windows.Media.ExceptionEventArgs)
Dim image As System.Windows.Media.Imaging.BitmapImage = DirectCast(sender, System.Windows.Media.Imaging.BitmapImage)
image.UriSource = New Uri("C:\Users\myUser\Desktop\errorSign.jpg")
End Sub
ダウンロード ハンドラーから例外をスローしても、DecodeFailed も DownloadFailed も起動しません。Coverter は確実に使用されており、画像が表示されています。
...
<myNs:ImageConverter x:Key="ImageConverter"></myNs:ImageConverter>
...
<Image Height="125" Source="{Binding Path=Uri, Converter={StaticResource ImageConverter}}"/>