在母版页中,有一个 Button 或另一个定义了 AccessKey 的对象。在子页面中,调用 ContentDialog。打开内容对话框时,按 ALT 键,然后按访问键。即使模式对话框打开,后面的对象也会触发。
显示时ContentDialog
,它将阻止与应用程序窗口的交互,直到被显式关闭。但它不能阻止访问键,因为键盘快捷键通过为用户提供一种直观的方式来通过键盘而不是指针设备(例如如触摸或鼠标)。
对于您的场景,我们建议制作事件来检测对话框是否显示,然后将根页面设置为IsEnable
真或假。
在您的应用程序类中执行操作
public static Action<bool> IsDialogOpen;
检测对话框打开或关闭。
private async void Button_Click(object sender, RoutedEventArgs e)
{
ContentDialog dialog = new ContentDialog
{
Content = "Press ALT, then C or V",
Title = "Non Modal Dialog",
PrimaryButtonText = "OK"
};
dialog.Opened += Dialog_Opened;
dialog.Closed += Dialog_Closed;
_ = await dialog.ShowAsync();
}
private void Dialog_Closed(ContentDialog sender, ContentDialogClosedEventArgs args)
{
App.IsDialogOpen(false);
}
private void Dialog_Opened(ContentDialog sender, ContentDialogOpenedEventArgs args)
{
App.IsDialogOpen(true);
}
禁用或启用根页面基础对话框是否打开。
public NavigationRoot()
{
this.InitializeComponent();
App.IsDialogOpen = (s) =>
{
this.IsEnabled = s ? false : true;
};
}