2011-12-23 12 views
1

を変更した後、私はこのように定義されたコンボボックスの列を持つデータグリッドを持っています。しかし、コンボボックス内のテキストボックスのテキストは別のデータグリッドで編集可能で、別のObservableCollection(QualityItemCollection)に入れて、上のグリッドのコンボボックスを取得するようにしました。そのコレクションが変更されたときに発生するデータグリッドのイベントがあります。これにより、QualityInfoAssortmentCollectionが再度読み込まれるようになります(コンボボックスも再度設定する必要があるため、動作させるにはループがいくつかあります)。コンボボックスのパフォーマンスのItemsSource

ここで、初めてデータが読み込まれたとき、すべてが素晴らしく、ダンディーですが、QualityInfoAssortmentCollectionを更新しているイベントが発生したときに、コンボボックスに入るには5〜7秒かかります。リフレッシュそのものは時間がかかり、10分の1秒もかかりません。コンボボックスには8〜10行しかありませんが、他の場所で提案されているように仮想化スタックパネルを使用しようとしても違いはありません。それを表示するデータグリッドには約10行があるので、シャッフルする必要がある膨大な量のデータにも近くない。

編集:定義しているQualityItemCollectionを使用できないという詳細な説明。 QualityItemColletionは、上記のDataGridのすべての項目で同じですが、チェックするチェックボックスの情報は、上のグリッドのアイテムごとに設定されています。したがって、QualityItemCollectionのコピーをQualityItemAssortmentCollectionに作成します。このコレクションには、チェックボックスのboolもあります。これを行うより良い方法があるかもしれませんか?

編集2: 今すぐWPFプロファイラを試してみてください。プログラムのようにロックされ、プログラムが奇妙なことをしている間は何も表示されません。しかし、それはVisual Studioの機能です。なぜなら、Visual Studioを使わずにプログラムを単独で実行すると遅延がないからです。わーい。

+0

私はこれを取得しませんでした...'コンボボックスのテキストボックスのテキストは別のデータグリッドで編集可能です。グリッドのコンボボックスを更新するには、コレクションが変更されたときに発生するデータグリッドのイベントがあります。 '...コレクションが観測可能な場合は、なぜそれを修正することができないのですか?あなたが話しているその出来事の目的を理解できませんでした。 –

+0

少し説明してみました。 – PerK

答えて

4

VSデバッガで問題が発生しました。それは何らかの理由でコンボボックスをひどく遅くさせます。

+0

私もこの問題があります。私は何が間違っていたかを試すのに何時間も費やしてきましたどうもありがとうございます。しかし、それをやっていたVSデバッガで何がうまく動いたのですか? – darbid

1

だから、修正しますか?

QualityInfoAssortmentCollectionを更新イベントは、上記のコンボボックスを発射したとき、そこに取得しようとしたときにドロップダウンするために5-7 秒かかります。

どこに時間を費やしますか?それはまわりにプロファイラーがないようではありません。

http://msdn.microsoft.com/en-us/library/aa969767.aspx

また、あなたがWPFの時間を費やしている場所(つまりあなたには、いくつかの間違いでもよい、見ることができますWPFレベルプロファイラでstaretd取得します。このリンクが、その場合には、これはWPF関連していることは全く可能ですいくつかのWPF定義では)。

更新不能なイベントをあまりにも多く送信することもできます(更新通知を送信する前に、値が変更されたかどうかを常に確認する必要があります)。したがって、アップレートは、別の更新をトリガーする同じ値にプロパティを更新する可能性があります。プロファイラでは、これらの発生を見つけることができます。

ここでいいえ、yuoを助けることができます - コードなしなどですが、プロファイラでは時間が費やされた場所が明白になります。

+0

プロファイラのリンクをありがとう。そのユーザーは、ブレークポイントとクロックに打ち勝ちます。 – Paparazzi

関連する問題