イメージ ダウンローダーとして使用する DependencyObject を作成しています。アプリケーションがイメージをダウンロードすると、この動作は正常であり、イメージ コントロールを Uri から作成された BitmapImage にバインドするか、直接Uri 自体をバインドします。ただし、ストリームを使用する場合はそうではありません。少なくとも私の場合、これは私のコードです:
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 で作成されたときのように BitmapImage をキャッシュしたり、Image コントロールを Uri に直接バインドしたりする代わりに、Image がリロードされるたびに。BitmapImage が再度読み込まれないようにするにはどうすればよいですか?
ありがとう