我有一个控件,包含应该从文件位置(网络或本地)拉出的图像。我有以下XAML代码:WPF图像后备不起作用失败的网络图像
<Image Width="96" Height="96" Stretch="Uniform" Grid.Column="1"
Source="{Binding PreviewImageFullPath, FallbackValue={StaticResource img_Fallback}, TargetNullValue={StaticResource img_Fallback}}" />
,这是它指的是img_Fallback:
<BitmapImage UriSource="pack://application:,,,/GamutBase;component/Images/Icon_PreviewMissing.png" x:Key="img_Fallback" />
当相关属性为空或空字符串,它显示了就好了。如预期的那样,如果该属性被设置并且该文件存在,则主图像显示出来。但是,如果将该属性设置为未找到的位置,则根本不显示任何位置,主图像(显然)或后备。在这种情况下,你如何制作备用秀?
注意FallBackValue是结合自身的属性。这意味着,当绑定失败时,将使用FallBackValue。但绑定本身并不会失败,对吧? 'Image'有一个[ImageFailed](https://msdn.microsoft.com/en-us/library/system.windows.controls.image.imagefailed(v = vs.110).aspx)事件,您可以使用它检测从网络上加载图像失败... – elgonzo
ImageFailed事件工作完美,我只是告诉它在图像上返回一个null失败并触发一个属性更改事件,更新就像我希望的一样!如果你让它成为答案,我会接受。 – sfaust
您也可以实现显式读取图像文件或发出http请求的绑定转换器,并在原始无法加载的情况下返回后备图像。 – Clemens