C# 如何触发TreeView LostFocus事件
我有一个这样的树视图:C# 如何触发TreeView LostFocus事件,c#,wpf,treeview,treeviewitem,C#,Wpf,Treeview,Treeviewitem,我有一个这样的树视图: <TreeView LostFocus="treeView_LostFocus"> <TreeViewItem Selected="treeViewItem_select"/> </TreeView> 当我使用TreeViewItem\u select在TreeViewItem中选择不同的项目时,它总是首先触发事件treeView\u LostFocus。仅当TreeView
<TreeView LostFocus="treeView_LostFocus">
<TreeViewItem Selected="treeViewItem_select"/>
</TreeView>
当我使用TreeViewItem\u select
在TreeViewItem中选择不同的项目时,它总是首先触发事件treeView\u LostFocus
。仅当TreeView
失去焦点时,而不是在triggertreevieItem\u选择之前,如何触发失去焦点事件
ps:makee.Handle=true
在TreeView的末尾,您选择的似乎不起作用。解决方案是检查键盘焦点是否仍在TreeView中
private void treeView_LostFocus(object sender, RoutedEventArgs e)
{
var tv = sender as TreeView;
if (tv.IsKeyboardFocusWithin == false)
{
//Your code
}
}
这样,当您的子项获得焦点时,您的代码将无法执行。只有当整个树视图失去焦点时 它起作用了。但还有一个问题。当整个TreeView失去焦点时,我应该将选定的TreeView项目设置为未选中,以便在重新选择同一TreeView项目时再次触发select事件。所以我只是将代码treeViewItem.IsSelected=false
(treeViewItem是treeViewItem在xaml中的名称),它似乎不起作用。我有什么地方错了吗?也许鼠标双击活动是个不错的选择。不知何故,我必须将其放入选定事件中。@Dragon我认为,通过在树视图项上的MouseDown事件或另一个MouseClick事件,在树视图项上重新选择您的项目或只是运行您想要的代码,可能可以解决您的问题。但这是一个完全不同的问题。如果你在实现这一点上仍然有困难,我建议你再提出一个问题,在这个问题上,你可以更完整、更准确地描述你的问题,你想达到什么目的。