2012-04-05 62 views
0

我有一個treeview和一個文本框。當我在文本框中輸入時,它實時更新樹形視圖(按照我輸入的內容進行過濾,並與樹視圖中的對象進行匹配)。如何使UI元素加載而不凍結? (WPF)

問題是它開始凍結一點,因爲我在框中鍵入。即。而樹視圖正在更新文本框凍結。我已經把填充樹視圖的邏輯放在另一個線程中,希望這會使它運行得更快 - 它做到了,但還不夠。我認爲這是導致響應性降低的實際UI更新。

有什麼方法可以解決這個問題?是否有可能在不同的線程中處理不同的UI元素(在這種情況下,樹視圖和文本框) - 而不僅僅是現在的情況?

謝謝

回答

0

你的問題是隻有一個UI線程存在!

您的問題的一個可能的解決方案是在用戶輸入文字後的幾毫秒後過濾樹狀視圖。

另一種可能性是在單獨的任務中進行篩選,並重新分配Treview的結果。

我希望這可以幫助你解決你的問題。

+0

感謝您的回覆。是否有可能使多個UI線程存在或是.NET的限制?將過濾作爲一項單獨的任務意味着什麼?目前,過濾(在樹視圖中搜索)在另一個線程中完成。這只是樹視圖的實際更新,似乎會減慢速度。乾杯 – theqs1000 2012-04-06 05:54:52

+0

@ theqs1000它只存在一個由.NET限制的UI線程。您可以嘗試使用CollectionViewSource(嘗試查看MSDN幫助)來過濾您的樹視圖,或者只在一個單獨的線程(任務)中過濾源集合,然後將結果放到樹視圖中(因此樹視圖不會凍結),希望這有助於 – punker76 2012-04-07 21:00:30