我将 Windows Phone 8.1(RT 不是 silverlight)上 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;
}
这很好用,但是通过这样做,我失去了原始绑定,因此如果我用不同的绑定值重新加载同一个屏幕,它不会重新绑定。
考虑到我正在做的事情,这是有道理的,所以在这种情况下,我的问题是我做错了什么以及如何正确设置后备图像,同时允许图像在重新加载时重新绑定自身?