C# 将选项卡限制为自定义窗口内消息框

C# 将选项卡限制为自定义窗口内消息框,c#,wpf,C#,Wpf,我为我的应用程序制作了一个自定义MessageBox,它作为用户控件启动。我在它里面有两个按钮,我想允许用户按Tab键在按钮之间切换。但是,由于它是一个覆盖内容的UserControl,按tab键两次以上会使焦点转到背景中不应该被标记的元素上 我想不出一个好办法来防止这种情况的发生,我已经想到了一种方法,可以选择所有元素,将它们的IsTabStop值设为false,然后在以后恢复它们,但我认为这更像是一个问题,而不是一个解决方案 有没有办法将制表符仅限于UserControl 我还希望得到有关使

我为我的应用程序制作了一个自定义MessageBox,它作为
用户控件启动。我在它里面有两个按钮,我想允许用户按Tab键在
按钮之间切换。但是,由于它是一个覆盖内容的
UserControl
,按tab键两次以上会使焦点转到背景中不应该被标记的元素上

我想不出一个好办法来防止这种情况的发生,我已经想到了一种方法,可以选择所有元素,将它们的
IsTabStop
值设为false,然后在以后恢复它们,但我认为这更像是一个问题,而不是一个解决方案

有没有办法将制表符仅限于
UserControl


我还希望得到有关使用留言盒的建议。。整个messagebox是一个异步函数,在给出答案之前有一个无限循环。在选择其中一个消息框选项之前,是否有其他方法停止应用程序?

Crowcoder的参考已导致正确的MSDN页面,我在其中找到了我的解决方案:

dialog = new UCMessageBox("Are you sure you want to exit the application?", MBType.YesNo);
AppMessageBox.Children.Add(dialog);
KeyboardNavigation.SetTabNavigation(dialog, KeyboardNavigationMode.Cycle);
关键是调用
.SetTabNavigation
函数并将其引导到我的对话框(消息框的自定义
UserControl
),然后将
KeyboardNavigationMode
设置为
Cycle

关闭UC后,应用程序的其余部分继续正常导航。

重复