1

Windows Phone 8のリストボックスにBitmapImagesを読み込もうとしていますが、奇妙な動作が見られます。ページが最初に表示されたとき、リストボックスは空に見えますが、戻ると、ページに戻って画像が読み込まれます。私には、必要なときに画像が読み込まれていないように見えます。これは私が(コンバーターを介して)使用しているコードです:

        BitmapImage img = null;
        StreamResourceInfo res = Application.GetResourceStream(new Uri("/MyAssembly;component/Resource/images/myimage.png", UriKind.Relative));
        Stream s = res.Stream;
        using (s) {
            img= new BitmapImage();
            img.SetSource(s);
        }
        img.CreateOptions = BitmapCreateOptions.None;

作成オプションを試してみましたが、役に立ちませんでした。

4

3 に答える 3

1

ソースが設定された後にビューが更新されていない可能性があるようです。空のリスト ボックスを読み込みます。次に、すべての画像をロードします。何も表示されません。しかし、ページに戻ってきたら魔法!ビュー全体が再描画されるため、それらはすべてそこにあります(現在は画像ソースがあります)。アプリに戻る前にアプリを強制終了すると、ソースをリセットする必要があるため、空のリスト ボックスが再び表示されます。これがWindows 8でどのように機能するかはわかりませんが、 listbox.RefreshView() のようなものを呼び出して、強制的に再描画できるはずです。

于 2013-02-02T20:27:51.117 に答える
0

here で説明されているRaisePropertyChangedように、実際に ViewModel のプロパティを呼び出して更新を強制する必要がありましたが、あなたの答えは正しい方向を示してくれました。@teabaggs に感謝します。

奇妙なことに、これはピボット コントロールをルート要素として使用していたときに機能しましたが、パノラマに切り替えるとイベントの順序が変更されたに違いありません。

于 2013-02-03T10:47:22.400 に答える
0

Use this: img.CreateOptions = BitmapCreateOptions.BackGround;

and assign in private void BitmapImage_ImageFailed(object sender, ExceptionRoutedEventArgs e) { BitmapImage img = new BitmapImage(); img.UriSource = new Uri("Your local Image", UriKind.Relative); } Your local image. Anyways image will take time in being rendered, this is best and fastest method i have found till now

于 2014-07-16T07:44:22.220 に答える