如何在Windows 10通用应用程序中显示模态窗口?

12

当我在Windows 10中使用邮件通用应用程序时,当我添加一个帐户(设置→帐户→添加帐户)时,似乎会弹出一个模态窗口来选择帐户。我尝试使用MessageDialog,但我无法将任何自定义内容放入其中。

编辑:这是屏幕截图 screenshot

有人知道如何实现它或者是否有API可以做到这一点吗?

注意:当此窗口打开时,您甚至无法最小化/最大化/关闭主窗口。因此,它绝对是一个模态窗口。

3个回答

21

我自己还没有使用过,但是我相信你正在寻找ContentDialog API。

var dialog = new ContentDialog() {
    Title = "Lorem Ipsum",
    MaxWidth = this.ActualWidth // Required for Mobile!
    Content = YourXamlContent
};


dialog.PrimaryButtonText = "OK";
dialog.IsPrimaryButtonEnabled = false;
dialog.PrimaryButtonClick += delegate {
};

var result = await dialog.ShowAsync();

内容对话框

msdn对话框指南:链接

msdn ContentDialog API: 链接


5
你可以轻松地创建一个新视图,例如在你的App.xaml.cs中:
public static async Task<bool> TryShowNewWindow<TView>(bool switchToView)
{
    var newView = CoreApplication.CreateNewView();
    int newViewId = 0;
    await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        var frame = new Frame();
        frame.Navigate(typeof(TView), null);
        Window.Current.Content = frame;

        newViewId = ApplicationView.GetForCurrentView().Id;
    });
    var viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
    if (switchToView && viewShown)
    {
        // Switch to new view
        await ApplicationViewSwitcher.SwitchAsync(newViewId);
    }
    return viewShown;
}

如需更多信息,请查看以下两个指南:


我知道,而且我已经尝试过了,但是新窗口不是模态窗口。 - tao
@tao 好的,你并没有要求模态窗口。 - Herdo
抱歉,邮件应用程序似乎弹出了一个模态窗口,你知道如何实现它吗?谢谢! - tao
@tao 邮件应用程序不使用模态对话框。从我提供的链接中可以看到:邮件应用程序使用多个窗口。用户可以在主应用程序窗口中查看消息或打开新窗口。例如,当用户想要撰写新消息,但同时使用主窗口搜索其他消息时,这非常有用。 仅应在以下情况下使用模态对话框:当用户的安全可能受到威胁时当用户即将永久更改有价值的资产时当用户即将删除有价值的资产时确认应用内购买时 - Herdo
这不是一个模态解决方案。 - Jerry Nixon
@JerryNixon-MSFT 的确。而且,最初的问题没有进行编辑,也没有要求模态解决方案。 - Herdo

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接