如何触发TreeView LostFocus事件

本文关键字:事件 LostFocus TreeView 何触发 | 更新日期: 2023-09-27 18:13:11

我有一个这样的TreeView:

        <TreeView LostFocus="treeView_LostFocus">
            <TreeViewItem Selected="treeViewItem_select"/>
        </TreeView>

它总是触发事件treeView_LostFocus首先当我选择不同的项目在TreeViewItem使用treeViewItem_select。如何只在TreeView失焦时触发失焦事件,而不是在触发treeViewItem_select之前触发失焦事件?

ps: make e.Handle = true in the end of treeViewItem_select seems not work.

如何触发TreeView LostFocus事件

一个解决方案是检查KeyboardFocus是否仍然在TreeView内。

private void treeView_LostFocus(object sender, RoutedEventArgs e)
{
    var tv = sender as TreeView;
    if (tv.IsKeyboardFocusWithin == false)
    {
        //Your code
    }
}

这样当你的子元素得到焦点时,你的代码就不会被执行。只有当整个TreeView失去焦点时。