1

プログラムで行ヘッダーと列を追加する必要があるWPFDataGridがあります。私はこれを正常に実装しましたが、パフォーマンスは許容できません。列が追加されるたびに、ColumnCollectionが出力されCollectionChangedEventます。このイベントを無効にする方法が見つからなかったため、パフォーマンスを向上させる他の方法を調査しました。

バックグラウンドスレッドでDataGridを作成し、グリッドをUIに追加しようとしましたが、成功しませんでした。次のメッセージが表示されます。

"UI Element is owned by a different thread" 

メインUIスレッドでDataGridを作成し、バックグラウンドスレッドに列を追加しようとしました。同じ問題。そもそも問題なので、UIスレッドに依頼することはできません。

DataGridに多くの列を追加するために他にどのようなアプローチが使用されていますか?(1つのケースでは10,000列)

ジャネネ

4

1 に答える 1

1

最終的に、このコード行を使用して、バックグラウンドでDataGridを作成し、それをUIに追加しました。

 this.Dispatcher.BeginInvoke(DispatcherPriority.Background, new UpdateNodesDelegate(UpdateNodes));

このソリューションは、C#2008のWPFレシピの本から入手しました。

ジャネネ

于 2012-09-17T17:56:59.800 に答える