使内容对话框像Groove应用程序中的那样移动

use*_*206 1 c# xaml win-universal-app windows-10-universal

我创建了一个ContentDialog套用样式(我不能用一个消息对话框,然后弹出的应用),但我有它的问题,它是不可移动的或我不能关闭它像出现的框,当我单击Groove应用程序中的"Connexion"按钮 在此输入图像描述

请你有任何想法,我可以在ContentDialog样式中修改哪一部分,以使这个ContentDialog可以移动并关闭它像顶部的图像

我在一个通用应用程序上工作

Gra*_*eng 6

请问你有什么想法,我可以在ContentDialog样式中修改哪一部分来使这个ContentDialog可以移动并像顶部的图像一样关闭它.

我担心ContentDialog不可移动,你在Groove应用程序或系统的邮件应用程序中显示的图像不是ContentDialog,实际上,这个"对话框"由UserDataAccountManager.ShowAddAccountAsync调用.如果我们使用ProcessMonitor跟踪此UI,我们会发现这是一个系统应用程序C:\ Windows\SystemApps\Microsoft.AccountsControl_cw5n1h2txyewy.您可以在SO:UWP模态窗口中看到类似问题中的图片和信息.

对于你的问题,我们无法启动像Microsoft.AccountsControl这样的系统应用程序获取结果,我们只能使用API​​调用它UserDataAccountManager.ShowAddAccountAsync.但是你可以创建一个UWP应用程序,并为另一个应用程序的结果启动此应用程序,为此,请参阅启动应用程序获取结果.

或者,如果你只想要一个可移动的UI,你可以在你的应用程序中创建一个新窗口,并改变这个新窗口的大小,让它像一个弹出行为ContentDialog,但这个新窗口将显示你的应用程序的标题,无法删除.

如何创建新窗口?例如:

    private async void OnClick(object sender, RoutedEventArgs e)
    {
        var newCoreAppView = CoreApplication.CreateNewView();
        var appView = ApplicationView.GetForCurrentView();
        await newCoreAppView.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, async () =>
        {
            var window = Window.Current;
            var newAppView = ApplicationView.GetForCurrentView();

            var frame = new Frame();
            window.Content = frame;

            frame.Navigate(typeof(BlankPage));            
            window.Activate();
            await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newAppView.Id, ViewSizePreference.Default, appView.Id, ViewSizePreference.Default);

        });
    }
Run Code Online (Sandbox Code Playgroud)

以及如何更改新窗口的大小?例如,在新窗口中显示的页面的cs文件中:

public BlankPage()
        {
            this.InitializeComponent();
            this.Loaded += Page_Loaded;
        }

        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            var s = ApplicationView.GetForCurrentView();
            s.TryResizeView(new Size { Width = 600, Height = 320 });
        }
Run Code Online (Sandbox Code Playgroud)

这将形成600宽度和320高度的窗口.