1

我有一个 WPF 弹出窗口,其中有几个控件。用户可以很好地浏览控件。但是当到达最后一个控件时,tab 会将焦点移回 Popup 中的第一个控件。

我希望弹出窗口关闭并将焦点移到弹出窗口父级中的下一个控件,而不是循环回到起点。

我已经看到了 KeyboardNavigation.TabNavigation 选项,但无论我将它们设置为什么,焦点总是循环(或禁用选项卡)。

有没有办法获得 OnCycle 事件,以便我可以手动关闭弹出窗口?

4

1 回答 1

2

没有事件可以告诉您焦点何时循环回来。您可以在第一个控件上添加PreviewGotKeyboardFocus事件的处理程序,并Popup在最后一个控件当前具有键盘焦点时关闭。但是,如果用户从最后一个控件显式单击到第一个控件,这也会关闭弹出窗口。

我可能会在标签顺序中的最后一个控件之后放置一个不可见的控件。因此,当用户从最后一个控件中选择选项卡时,不可见的控件将获得焦点,并且您会知道关闭弹出窗口。

于 2012-10-19T17:31:25.847 回答