Xaml 当所有子级都失去焦点时发生WPF容器事件

Xaml 当所有子级都失去焦点时发生WPF容器事件,xaml,focus,panel,Xaml,Focus,Panel,例如,假设我有: <StackPanel> <TextBlock /> <TextBox /> <TextBox /> </StackPanel> 我想处理StackPanel丢失焦点的事件。换句话说,当焦点被赋予StackPanel之外的任何其他控件时 问题是,如果我处理StackPanel的LostFocus事件,即使焦点在其中的文本框之间交换,也会触发此事件(我猜这是由于RoutedEvent的概念) 我还

例如,假设我有:

<StackPanel>
   <TextBlock />
   <TextBox />
   <TextBox />
</StackPanel>

我想处理StackPanel丢失焦点的事件。换句话说,当焦点被赋予StackPanel之外的任何其他控件时

问题是,如果我处理StackPanel的LostFocus事件,即使焦点在其中的文本框之间交换,也会触发此事件(我猜这是由于RoutedEvent的概念)

我还尝试用InChanged事件处理isKeyboardFocus。它适用于文本框,但如果用户单击文本块,键盘焦点将丢失,从而触发事件

请注意,将名称添加到文本框并在LostFocus事件中对其进行过滤不是一个选项,因为这些元素将位于ListView中,因此我无法将名称添加到文本框


谢谢你的帮助

您可以尝试处理子级的LostFocus,并将RoutedEventArgs.Handled属性设置为true,以防止事件冒泡到StackPanel:

void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
   e.Handled = true;
}