题
我使用以下方法通过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;
}
请让我知道如果您有任何建议,谢谢
<磷>氮解决方案
此工作正常。该PreviewMouseLeftButtonDown
事件是路由事件(在这种情况下,策略是隧道)。这意味着视觉树的根首先获取事件,和它的作品的方式,直到它到达最初触发事件的控制。该MouseLeftButtonDown
和Selected
事件也排到,但其策略冒泡 - 这意味着事件的工作它的方式可视化树,从触发事件控制
如果你想有一个路由事件不继续被发送,设定中Handled
通过RoutedEventArgs
的true
财产。
不隶属于 StackOverflow