我有一个WPF Popup,里面有几个控件。用户可以通过控件进行选项卡。但是当达到最后一个控件时,tab会将焦点移回Popup中的第一个控件。
我不想循环回到开始,我希望Popup关闭并将焦点移动到Popup的父级中的下一个控件。
我已经看过KeyboardNavigation.TabNavigation选项,但无论我将它们设置为什么,焦点总是循环(或禁用标签)。
有没有办法获得OnCycle事件,所以我可以手动关闭Popup?
答案 0 :(得分:1)
没有任何事件会告诉您焦点何时重新循环。您可以在第一个控件上为PreviewGotKeyboardFocus事件添加处理程序,如果最后一个控件当前具有键盘焦点,则关闭Popup
。但是如果用户明确地从最后一个控件点击到第一个控件,这也会关闭弹出窗口。
我可能会在Tab键顺序中的最后一个控件之后放置一个不可见的控件。因此,当用户从最后一个控件中选中时,隐形控件将获得焦点,您将知道关闭弹出窗口。