如何触发TreeView LostFocus事件

时间:2015-09-17 09:11:33

标签: c# wpf treeview treeviewitem

我有一个像这样的TreeView:

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

当我使用treeView_LostFocus在TreeViewItem中选择不同的项时,它总是首先触发事件treeViewItem_select。如果TreeView失去焦点,而不是在触发treeViewItem_select之前,我怎么能触发丢失的焦点事件?

ps:e.Handle = true末尾的treeViewItem_select似乎无效。

1 个答案:

答案 0 :(得分:0)

解决方案是检查KeyboardFocus是否仍在TreeView中。

private void treeView_LostFocus(object sender, RoutedEventArgs e)
{
    var tv = sender as TreeView;

    if (tv.IsKeyboardFocusWithin == false)
    {
        //Your code
    }
}

这样,当您的子项获得焦点时,您的代码将无法执行。只有当整个TreeView失去焦点时。