C# 从构造函数初始化最顶端的UWP窗口

C# 从构造函数初始化最顶端的UWP窗口,c#,windows,uwp,C#,Windows,Uwp,奇怪的问题。 我正在尝试构建一个桌面应用程序,它可以选择打开第二个“窗口”。 所以富打开了酒吧。 默认情况下,只有条形图应该是最顶部的窗口。 当通过单击按钮调用时,下面的方法工作得很好 private async Task<bool> MakeTopMost() { await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(ApplicationViewMode.CompactOve

奇怪的问题。 我正在尝试构建一个桌面应用程序,它可以选择打开第二个“窗口”。 所以富打开了酒吧。 默认情况下,只有条形图应该是最顶部的窗口。 当通过单击按钮调用时,下面的方法工作得很好

    private async Task<bool> MakeTopMost()
    {
        await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay);
    }
。。。 瞧。什么也没发生。我也尝试了加载的事件。没有骰子。 我错过了什么

编辑: 一个解决办法是点击按钮打开一个新的应用程序,这也会使该应用程序成为最顶级的应用程序。像这样:

    private async void ShowCompactView()
    {
        var compactViewId = ApplicationView.GetForCurrentView().Id;
        await CoreApplication.CreateNewView().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            var frame = new Frame();

            frame.Navigate(typeof(BAR));
            Window.Current.Content = frame;
            Window.Current.Activate();
            ApplicationView.GetForCurrentView().Title = "CompactOverlay Window";
        });
        bool viewShown = await ApplicationViewSwitcher.TryShowAsViewModeAsync(compactViewId, ApplicationViewMode.CompactOverlay);
    }

但这使得整个应用程序成为最顶级的(不仅仅是一个页面)。

我在问题最后发布的方法中基本上做的是

  • 获取当前显示的应用程序页面的id
  • 打开一个新页面
  • 压缩覆盖id。它是主页。因此,整个应用程序基本上被设置为最顶级
  • 因此,通过使用一个变量来保存新打开的页面的id,即BAR,我们可以从FOO打开一个自动设置为最顶层的页面

    私人国际酒店

        private async void ShowCompactView()
        {
            await CoreApplication.CreateNewView().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                var frame = new Frame();
    
                frame.Navigate(typeof(Bar));
                _barID = ApplicationView.GetForCurrentView().Id;
                Window.Current.Content = frame;
                Window.Current.Activate();
                ApplicationView.GetForCurrentView().Title = "CompactOverlay Window";
            });
            bool viewShown = await ApplicationViewSwitcher.TryShowAsViewModeAsync(sliderID, ApplicationViewMode.CompactOverlay);
        }
    
    这应该是显而易见的

        private async void ShowCompactView()
        {
            await CoreApplication.CreateNewView().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                var frame = new Frame();
    
                frame.Navigate(typeof(Bar));
                _barID = ApplicationView.GetForCurrentView().Id;
                Window.Current.Content = frame;
                Window.Current.Activate();
                ApplicationView.GetForCurrentView().Title = "CompactOverlay Window";
            });
            bool viewShown = await ApplicationViewSwitcher.TryShowAsViewModeAsync(sliderID, ApplicationViewMode.CompactOverlay);
        }