C# WPF-知道哪个控件将以焦点结束

C# WPF-知道哪个控件将以焦点结束,c#,wpf,events,focus,C#,Wpf,Events,Focus,我一直在WPF中处理事件,到目前为止,我已经从事件args的“Source”和“OriginalSource”属性以及使用发送控件和FocusManager中获得了很好的效果。事情是这样的,当一连串的事件发生时,有没有办法知道,如果在整个事件链中没有任何干预逻辑,什么控件最终会以焦点结束?恐怕唯一可靠的方法就是让焦点发生变化,然后在顶部视图级别的某个PreviewGotKeyboardFocus处理程序中处理它 然后,您可以知道哪个控件将获得焦点,并使用e.Handled=true取消更改 警察

我一直在WPF中处理事件,到目前为止,我已经从事件args的“Source”和“OriginalSource”属性以及使用发送控件和FocusManager中获得了很好的效果。事情是这样的,当一连串的事件发生时,有没有办法知道,如果在整个事件链中没有任何干预逻辑,什么控件最终会以焦点结束?

恐怕唯一可靠的方法就是让焦点发生变化,然后在顶部视图级别的某个
PreviewGotKeyboardFocus
处理程序中处理它

然后,您可以知道哪个控件将获得焦点,并使用
e.Handled=true
取消更改


警察局。所有UIElements中都有一个名为
PredictFocus
的函数,但它只适用于位置遍历更改,而不适用于基于选项卡的更改(或自定义聚焦)。

谢谢。基本上,我有一个ListView,它可以在ListView选择发生更改时将值加载到文本框中,但我也希望它在光标选择移出ListView时取消选择ListViewItems,但仅限于UI的某些元素。通过测试控件集合的父StackPanel元素,我在某种程度上控制了这一点,但是实现这组复杂交互的代码变得越来越复杂,我想知道是否有办法减少混乱。我使用的是PrevLeftMouseButtonDown、LitsView LostFocus和ListView Sel的组合。