【问题标题】:Preventing WPF TreeView's GotFocus event from bubbling up the tree防止 WPF TreeView 的 GotFocus 事件冒泡树
【发布时间】:2010-12-20 11:42:47
【问题描述】:

我正在尝试编写一个事件处理程序,每次 TreeView 中的节点获得焦点时都会触发该事件处理程序。我遇到的问题是事件处理程序在我用鼠标单击的 TreeViewItem (节点)上触发,然后它继续冒泡控制树,即使我设置了 e.Handled = true on提供给处理程序的 RoutedEventArgs。有人知道问题可能是什么吗?我仔细检查了我的代码,我看不出为什么会发生这种情况。

【问题讨论】:

    标签: wpf treeview events focus


    【解决方案1】:

    当您真正想要 TreeViewItem.Selected 时,您是否使用 TreeView.GotFocus?

        <TreeView TreeViewItem.Selected="treeView1_Selected"  />
    

    如果您真的想要焦点,请改用 TreeViewItem.Focus,以便以项目而不是整个树为目标。

        <TreeView TreeViewItem.GotFocus="treeView1_GotFocus"/>
    

    【讨论】:

    • 当我应该使用 selected 时,我正在使用焦点,但我仍然很好奇:为什么即使我已将 RoutedEventArgs 标记为已处理,焦点事件仍会冒泡?
    • RoutedEvents 继续冒泡,即使您将它们标记为已处理。任何订阅者也可以选择接收已处理的事件。如果您经常使用 WPF,这是一本不错的读物:msdn.microsoft.com/en-us/library/ms747183.aspx
    • 这个答案,用这个stackoverflow.com/questions/1127614/… 解决了我的问题。谢谢大家。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多