在UWP中在辅助显示器上打开新窗口

5

我有一个使用两个显示器的UWP项目,我想在第二个显示器上打开一个新窗口。该应用程序包括三个部分:

  1. 在第一个显示器上打开主页面
  2. 创建新页面
  3. 在第二个显示器上打开新页面

我已经正确编写了第一和第二部分,但我找不到解决第三部分的方法。

请帮我将窗口移动到另一个显示器上。

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

      //called creat new page function
        NewWindow();
    }

    private async void NewWindow()
    {
        var myview = CoreApplication.CreateNewView();
        int newid = 0;
        await myview.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            Frame newframe = new Frame();
            newframe.Navigate(typeof(Newpage), null);

            Window.Current.Content = newframe;
            Window.Current.Activate();
            ApplicationView.GetForCurrentView().Title = "Z";

            newid = ApplicationView.GetForCurrentView().Id;
        });

        await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newid, ViewSizePreference.UseMinimum);

    }

}

请查看ProjectionManager类。 - Ehssan
这是一个WinForms应用程序吗? - preciousbetine
不,这是UWP应用程序。 - Mayson
3个回答

1

1

我找到了解决方案,并使用了ProjectionManger类

 private async void expand()
    {
        var NewWindow = CoreApplication.CreateNewView();
        int Windowid = ApplicationView.GetForCurrentView().Id;
        int NewWindowid = 0;

        await NewWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            Frame newframe = new Frame();
            newframe.Navigate(typeof(Newpage), null);

            Window.Current.Content = newframe;
            Window.Current.Activate();
            ApplicationView.GetForCurrentView().Title = "New Page";

            NewWindowid = ApplicationView.GetForCurrentView().Id;
        });

        //Call ProjectionManager class for moving new window to secodary display
        bool available = ProjectionManager.ProjectionDisplayAvailable;

        ProjectionManager.ProjectionDisplayAvailableChanged += (s, e) =>
        {
            available = ProjectionManager.ProjectionDisplayAvailable;
        };

        await ProjectionManager.StartProjectingAsync(NewWindowid, Windowid);
    }

0

这可能有助于您识别显示器。

this.Location = Screen.AllScreens[1].WorkingArea.Location;

1
Screen类在WFP平台上工作,但我不知道它在UWP中如何工作。 - Mayson

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