2012-04-05 23 views
0

私はツリービューとテキストボックスを持っています。テキストボックスに入力すると、リアルタイムでツリービューが更新されます(入力した内容でフィルタリングし、ツリービューのオブジェクトと照合します)。フリーズすることなくUI要素を読み込む方法を教えてください。 (WPF)

問題は、ボックスに入力中に少し凍結が始まることです。すなわち、ツリービューはテキストボックスを更新してフリーズしています。私はこれが少し速く走ることを望む別のスレッドにツリービューを投入するロジックを入れました。私はそれが応答性を減少させる実際のUIアップデートだと思います。

私はこの問題にどのように取り組むことができますか?異なるスレッドで扱われる異なるUI要素(この場合はツリービューとテキストボックス)を持つことは可能ですか?今の場合のロジックだけではなく、

ありがとうございました

答えて

0

問題はUIスレッドが1つだけ存在することです。

ユーザーがテキスト入力を行ってから数ミリ秒後に、ツリービューをフィルタリングすることで問題を解決できます。

別の可能性として、フィルタリングを別のタスクで行い、Treviewの結果を再割り当てすることがあります。

これがあなたの問題に役立つことを願っています。

+0

ご回答いただきありがとうございます。複数のUIスレッドを存在させることが可能か、それとも.NETの制限ですか?フィルタリングを別のタスクにすることで、どういう意味ですか?現時点では、フィルタリング(ツリービューによる検索)は別のスレッドで行われます。事態を遅らせるような、ツリービューの実際の更新です。歓声 – theqs1000

+0

@ theqs1000それは.NETの制限によって1つのUIスレッドしか存在しません。 CollectionViewSource(msdnヘルプを見てみてください)を使ってツリービューをフィルタリングしたり、別のスレッド(タスク)でソースコレクションをフィルタリングしたり、この後に結果をツリービューに入れることができます(ツリービューはフリーズしません)。それは助ける – punker76

関連する問題