2010-05-29 57 views
0

我在三級深層TreeView中有一個非常奇怪的錯誤。這是間歇性的,我無法找到如何重複它一貫。以編程方式刪除後,添加然後刪除一些第三級項目,當我點擊根項目時,它沒有被選中。它仍然可以展開/摺疊,但不能通過單擊鼠標進行選擇,也不會觸發ItemSelectionChange事件。您可以單擊以選擇第二級或第三級項目,之後您最終能夠選擇根項目。我已經嘗試在刪除後爲所有項目設置IsSelected = false,並嘗試在刪除項目時進行了很好的清理,但沒有幫助。有人遇到過這個bug嗎?你有任何建議來消除這個錯誤?WPF,TreeView的bug,從樹狀視圖中刪除項目後無法選擇根項目

回答

0

以編程方式將IsSelected設置爲節點後發生。然後我不能單擊來選擇前一個節點。

[編輯]

終於搞清楚發生了什麼事。看起來僅僅設置IsSelected屬性是不夠的,因爲樹的內部邏輯焦點保留在舊的選定元素上。

事件被髮送到樹項目,但因爲它已經在內部具有邏輯焦點,它沒有激發焦點更改(從中我猜測樹會知道何時更改所選項目)。

如果我把焦點放在我設置IsSelected爲true的樹節點上,它可以正常工作。

====================

你對新增加的元素設置IsSelected上真的嗎?如果是的話,也可以這樣做:

DependencyObject nodeVisualContainer = mTreeControl.ItemContainerGenerator.ContainerFromItem(nodeToSelect); 
      if (nodeVisualContainer is UIElement) 
       ((UIElement)nodeVisualContainer).Focus(); 

注意:這只是邏輯上關注元素。鍵盤焦點不會受到影響。