2011-02-04 8 views
1

私はさまざまな項目を持つTreeViewを持っています。 Itemは、IsSelectedプロパティがbool IsSelectedに割り当てられたVMにバインドされるようにスタイルされます。TreeViewItem isSelectedが2回発生しました

ツリービューアイテムをクリックするたびに、このVMプロパティは、値== false、値== trueの2回呼び出されます。

これは通常の動作ですが、IsExpendedプロパティが同じ方法でバインドされていて、一度しか呼び出されないと仮定した理由はわかりません。

おかげ

答えて

2

私は理由は、あなたが項目を選択すると、最初の古い項目の選択が解除され、その後、新しい項目が選択されていることであると思います。この結果、最初のfalseの呼び出しと2番目のtrueの呼び出しが行われます。

おそらくデバッグ中に、実際にそうであるかどうかを確認するために、表示モデルのDisplayNameまたは同様のプロパティをチェックして、どのアイテムが毎回変更されているかを確認する必要があります。

同様に、ノードを展開するときに、他のノードを折りたたむ必要はありません。したがって、展開しようとしたノードを単純に展開します(IsExpandedに対してtrueを渡します)。

+0

DUH !!ありがとう!!! – Pacman

2

この理由は、バブリングイベントです。

イベントが発生すると、イベントが処理されるまで「バブル」します。

3番目のレベルの項目を選択することで確認できます。

e.Handled = trueを設定するだけです。

Ofir

関連する問題