2011-02-04 35 views
1

我有一個TreeView與各種項目。項目的樣式使IsSelected屬性綁定到我的虛擬機到一個布爾IsSelected。TreeViewItem isSelected被激發兩次

無論何時單擊一個樹形視圖項目,該VM屬性將被調用兩次,首先使用值== false然後使用值== true。

我認爲這是一個正常的行爲,但我不知道爲什麼,因爲我有IsExpended屬性以相同的方式綁定,並且只調用一次。

感謝

回答

2

我懷疑的原因是,當你選擇一個項目,首先將舊項目被取消選中,那麼新的項目被選中。這會導致第一次調用false,第二次調用true。

也許在調試時,檢查視圖模型上的DisplayName或類似屬性,以查看每次修改哪些項目,以查看是否確實如此。

同樣,當您展開節點時,不需要摺疊任何其他節點。因此,它只是展開您試圖展開的節點(對於IsExpanded傳遞true)。

+0

DUH !!謝謝 !!! – Pacman 2011-02-25 22:54:01

2

原因是冒泡事件。

當事件發生時,它會「冒泡」直到它處理完畢。

您可以通過選擇第三級項目進行驗證。

你只需要設置e.Handled = true;

Ofir