wpf treeviewitem
我正在创建一个wpf treeviewitem,wpf,treeview,selected,treeviewitem,Wpf,Treeview,Selected,Treeviewitem,我正在创建一个TreeView,使用下面的方法在xml文档中循环 但是,当选择任何TreeViewItem时,层次结构中的所有节点都将获得事件触发器,而不仅仅是所选的TreeViewItem 例如,假设我们选择一个节点的孙子节点。所有节点(包括孙子节点、子节点、父节点)都触发同一事件 换句话说,我们希望只有孙子触发关联的事件,而事件应该只被调用一次,但是对于所选项目层次结构的所有节点,它最终被调用了3次 代码如下: TreeViewItem getTreeViewItemWithHeader(X
TreeView
,使用下面的方法在xml文档中循环
但是,当选择任何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
事件也会被路由,但它的策略是冒泡的-这意味着事件从触发事件的控件开始沿着视觉树向上运行
如果不希望继续发送路由事件,请将传入的RoutedEventArgs
的Handled
属性设置为true