私のWPFアプリケーションでははGridView
で、それはView
です。 ListView
のItemsSource
は、ViewModelのItemsCollectionにバインドされています。WPF:アニメーションをブロックせずにUIを更新する方法
このGridView
には多くの列があり、ListView
には多くの項目があります。
ListView
私は、サーバーから新しいデータを取得し、ViewModelのItemsCollectionを新しいデータで更新している間に、読み込み中のアニメーションを表示します。
このデータの取得はすでに非同期に行われているため、読み込みアニメーションは回転し続けます。しかし、データが取得され、バインディングがListView
を更新するとすぐに、読み込みアニメーションはUIの更新が終了するまでフリーズします。
バインディングでUIが更新されても読み込みアニメーションが回転し続けるようにするにはどうすればよいですか?
ありがとうございました。
ObservableCollectionをいくつかのレコードで更新していますか?その場合、個々のレコードの追加ごとにCollectionChangedイベントが発生しています。各イベントはUI更新をトリガーします。 –
はい、ViewModelのObservableCollectionを更新します。このUIの更新では、UIスレッドで発生するアニメーションもフリーズしています。 – Nostromo
ObservableCollectionに〜1kのエントリを追加する必要があり、UIが数秒間応答しなくなってしまうという問題がありました。 BulkAdd()メソッドを持つObservableCollectionから派生したクラスを作成して解決しました。すべてのエントリが追加された後で、1つのイベントしか発生しませんでした。パフォーマンスが大幅に向上しました。 –