Windows Phone 8.1 (Silverlight ではなく RT) の ImageBrush の ImageSource をリモート uri にバインドし、画像が既定の画像を表示できない場合にハンドラーを用意しています。
<ImageBrush Stretch="UniformToFill" ImageSource="{Binding MyBackgroundUrl}" ImageFailed="ImageBrush_ImageFailed"/>
コード ビハインドでは、イメージ ソース プロパティを更新してローカル イメージに設定します。
protected void ImageBrush_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
var img = sender as ImageBrush;
if (img == null) return;
var uri = new BitmapImage(new Uri("ms-appx:///Assets/App/MyDefaultBackground.jpg"));
img.ImageSource = uri;
}
これはうまく機能しますが、これを行うと元のバインディングが失われるため、同じ画面を異なるバインディング値でリロードすると、再バインドされません。
これは私がしていることを考えると理にかなっています。その場合、私の質問は、何が間違っていたのか、リロード時にイメージが再バインドできるようにしながらフォールバックイメージを正しくセットアップするにはどうすればよいですか?