我有一個控件,包含應該從文件位置(網絡或本地)拉出的圖像。我有以下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