简体   繁体   English

如何触发TreeView LostFocus事件

[英]How to trigger TreeView LostFocus event

I have a TreeView like this: 我有一个像这样的TreeView:

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

it always trigger event treeView_LostFocus first when I select different item in TreeViewItem using treeViewItem_select . 它总是触发事件treeView_LostFocus第一,当我使用树型视图中选择不同的项目treeViewItem_select How can I do to trigger the lost focus event only when the the TreeView losing focus, not before trigger treeViewItem_select ? 如何仅在TreeView失去焦点treeViewItem_select不是在触发treeViewItem_select之前触发失去焦点事件?

ps: make e.Handle = true in the end of treeViewItem_select seems not work. ps:在treeViewItem_select的末尾使e.Handle = true似乎不起作用。

A solution is to check if the KeyboardFocus is still within the TreeView. 一种解决方案是检查KeyboardFocus是否仍在TreeView中。

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

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

That way when your child items get focus, your code won't get executed. 这样,当您的子项获得焦点时,您的代码将不会执行。 Only when the whole TreeView loses focus. 仅当整个TreeView失去焦点时。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM