0

従来のtakeitベースのWPFDataGridを派生させて、カスタムDataGridを作成しています。グリッド内の機能でアイテムを1つずつ非同期にロードする必要があります。つまり、ItemsSourceが変更されるとすぐに、つまり、新しいコレクションがItemsSourceプロパティに設定されるか、バインドされたコレクションが、追加、移動、または削除されたアイテムのために変更されます(基になるソースがObservableCollectionなどのINotifyCollectionChangedを実装すると、通知がデータグリッドに届きます。

これは、データグリッドの下にスタックパネルを仮想化しても、複数の列があり、一部がテンプレートベースの場合、データグリッドのロードに時間がかかる(2〜3秒の遅延)ためです。上記の動作では、遅延が「表示」され、データグリッドにデータがあり、データをロードするのに十分な応答性があると感じさせることができます。

どうすればそれを達成できますか?

ThxVinit。

4

1 に答える 1

0

'を探しているように聞こえますがdata virtualization、これは通常、IList に似た独自のカスタム型を作成し、事後的にオブジェクトをハイドレートするために多くの作業を行うことを意味します。

グリッドが表示しているデータは、次のようになります。

Index 0: new MyDataObject(0);
Index 1: new MyDataObject(1);

また、MyDataObject は INotifyPropertyChanged を実装しています。

コンストラクターでは、実際の結果を読み取る必要があるタイミング、スケジュール、または解釈に必要なロジックを実行します。それまでは、かなり空のデータを返します... プロパティから null と string.Empty 。

次に、データが利用可能になると (理想的にはバックグラウンド スレッドで、どこからでも読み取られます - 独自のローカル データ、またはデータベースまたは Web サービス)、実際の基礎となるプロパティ値を更新し、プロパティ変更通知を起動して、UI がその後、適切にロードされます。

飛び込むには少し複雑すぎるので、いくつかの検索が役立ちます。これで始められることを願っています。

于 2010-05-11T07:53:17.497 に答える