0

UIが何かをロードしているときはいつでも、プログレスサークルを表示したいと思います。

shellViewでブール値を使用して、trueまたはfalseに設定してみました。

IsBusy=true;

しかし、MVVMにCaliburn Microを使用しているため、UIがバックグラウンド作業でフリーズするため、ビューに進行状況サークルが表示されません。バックグラウンドワーカーを使用してみましたが、機能しません。

ビューがビジー状態のときに進行状況インジケーターを表示したい。ComboBoxをロードしているか、バックグラウンドタスクを実行している可能性があります。

4

1 に答える 1

4

バックグラウンド タスク (Web サービスからのデータの取得など)を実行している場合は、.Net 4.0 でBackgroundWorkerorTask.Factory.StartNew()を使用して、別のスレッドでその操作を実行できます (いわゆる「UI スレッド」で実行するのではなく)。これにより、バックグラウンド操作の実行中にビューの応答性を維持できます。

現在、ビュー自体をロードする場合、別のスレッドでそれを行うことはできないため、UI が完全にロードされるまで少しの間フリーズするのを防ぐ方法はありません。

そのため、別のスレッドで「オーバーレイ ウィンドウ」を作成する (したがって、独自のディスパッチャを持つ) というオプションがあります。これは、現在ロードされているウィンドウの「真上」(Z オーダー) に配置された透明なウィンドウです。オーバーレイ ウィンドウには独自のディスパッチャーがあるため、応答性が維持されます。そのため、読み込みインジケーターまたはアニメーションを表示し、読み込みが完了したら削除できます。

これが私の言いたいことの例です。

于 2012-11-18T21:06:18.847 に答える