我正在创建一个 DependencyObject 以用作图像下载器,我期望的行为是,一旦它下载了应用程序缓存图像,当您将图像控件绑定到从 Uri 或直接创建的 BitmapImage 时,这种行为是正常的绑定 Uri 本身。但是,使用 Stream 时并非如此,至少在我的情况下,这是我的代码:
if ( String.IsNullOrEmpty( ImageEx.GetImage( this ) ) ) return;
ImageBitmap = new BitmapImage( new Uri( String.Concat( "ms-appx:///", ImageEx.GetLoadingImage( this ) ) ) );
//ImageBitmap = new BitmapImage( new Uri( ImageEx.GetImage( this ), UriKind.Absolute ) );
//return;
try {
var ras = new InMemoryRandomAccessStream();
var memoryStream = new MemoryStream();
var stream = await client.GetStreamAsync( ImageEx.GetImage( this ) );
await stream.CopyToAsync( memoryStream );
var output = ras.GetOutputStreamAt( 0 );
var dw = new DataWriter( output );
var task = new Task( () => dw.WriteBytes( memoryStream.ToArray() ) );
task.Start();
await task;
await dw.StoreAsync();
await output.FlushAsync();
ImageBitmap = new BitmapImage();
await ImageBitmap.SetSourceAsync( ras);
} catch ( Exception ex ) {
}
因此,当我在应用程序中来回移动时,每次重新加载图像而不是像使用 Uri 创建它或将图像控件直接绑定到 Uri 时那样缓存 BitmapImage。如何防止 BitmapImage 再次加载?
谢谢