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

时间:2015-08-04 07:34:25

标签: c# xaml uwp windows-10

当我在Windows 10中使用Mail univesal应用程序时,当我添加帐户(设置 - > accounts->添加帐户)时,似乎弹出一个选择帐户的模式窗口。我尝试使用MessageDialog,但我无法将任何自定义内容添加到其中。

编辑:这是截图 screenshot

有人知道如何实现它,或者有一些api可以做到吗?

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

3 个答案:

答案 0 :(得分:16)

我还没有用过它,但我相信你正在寻找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();

content dialog

msdn guidlines for dialogs:link

msdn ContentDialog API:link

答案 1 :(得分: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;
}

有关详细信息,请查看这两个指南:

答案 2 :(得分:0)

如果您使用Template10项目模板,则可以使用ModalDialog控件:https://github.com/Windows-XAML/Template10/wiki/Docs-%7C-Controls#modaldialog