当前位置:  开发笔记 > 开发工具 > 正文

为什么e.Source依赖于TreeView填充方法?

如何解决《为什么e.Source依赖于TreeView填充方法?》经验,为你挑选了1个好方法。



1> alex2k8..:

不知道为什么会这样,但至少我找到了解决方案:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/f0d3af69-6ecc-4ddb-9526-588b72d5196b/

    如果您的处理程序在TreeView上,请在事件参数中使用OriginalSource属性,然后沿着可视父链向上走,直到找到TreeViewItem.然后,选择它.您可以使用System.Windows.Media.VisualTreeHelper.GetParent遍历可视父链.

    您可以尝试为类型TreeViewItem和鼠标按下事件注册类处理程序.然后,只有在鼠标事件通过TreeViewItem元素时才应调用您的处理程序.

    您可以为类型TreeViewItem和上下文菜单打开事件注册类处理程序.

所以我的代码是:

private void OnMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    TreeViewItem treeViewItem = VisualUpwardSearch(e.OriginalSource as DependencyObject) as TreeViewItem;
}

static DependencyObject VisualUpwardSearch(DependencyObject source)
{
    while (source != null && source.GetType() != typeof(T))
        source = VisualTreeHelper.GetParent(source);

    return source;
}

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有