WPFのツリービューアイテム
-
21-09-2019 - |
質問
私は、XML文書をループ以下の方法を使用してTreeView
を作成しています。
TreeViewItem
が選択されている場合、しかし、階層内のすべてのノードは、イベントのトリガーだけではなく、選択TreeViewItem
を取得している。
我々はノードの孫を選択しましょう。孫、子、親を含むすべてのノードが同じイベントをトリガしています。
言い換えれば、我々は、関連するイベントのに対してのみ孫トリガーを期待して、イベントが一度だけ呼び出される必要がありますが、それは、選択した項目の階層のすべてのノードのために3回呼び出されてしまう。
ここでのコードは次のとおりです。
TreeViewItem getTreeViewItemWithHeader(XmlNode node)
{
TreeViewItem tvi = new TreeViewItem();
tvi.Header = node.Name;//hdr;
tvi.Tag = node.Attributes["Tag"].Value;
tvi.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(tvi_PreviewMouseLeftButtonDown);
tvi.Selected += new RoutedEventHandler(tvi_Selected);
return tvi;
}
あなたが何か提案がある場合は私に知らせてください、ありがとう。
N
解決
これは正しく動作しています。 PreviewMouseLeftButtonDown
イベントは、ルーティングイベント(この場合には戦略がトンネリングである)です。ビジュアルツリーのルートは、最初のイベントを取得し、それはもともとイベントをトリガ制御に達するまでそれがダウンしてそのように動作することをこれが意味。 MouseLeftButtonDown
とSelected
イベントもルーティングされますが、その戦略がバブリングされる - 。この手段は、イベントがイベントをトリガしたコントロールで始まる、ビジュアルツリーまでそのように動作することを
Handled
に渡さRoutedEventArgs
のtrue
プロパティを設定し、送信することが続行できません。
所属していません StackOverflow