Открыть новое окно на дополнительном мониторе в UWP - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть проект UWP с двумя мониторами, которые я хочу использовать, чтобы открыть новое окно на дополнительном мониторе.Приложение состоит из трех частей:

  1. Открыть главную страницу на первом мониторе
  2. Создать новую страницу
  3. Открыть на дополнительном мониторе

Iправильно написал первую и вторую части, но я не могу найти решение для третьей части.

Пожалуйста, помогите мне с переносом окна на другой монитор.

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);

    }

}

Ответы [ 3 ]

0 голосов
/ 26 декабря 2018

По предложению @ Ehssan, ProjectionManager Class соответствует вашим требованиям.Когда вы создаете новое представление, вы можете использовать ProjectionManager.StartProjectingAsync Method , чтобы отправить его на проектор или другой вспомогательный дисплей.

Вы можете увидеть официальный Образец проекции для получения дополнительной информации.

0 голосов
/ 26 декабря 2018

Я нашел решение и использовал Класс 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 голосов
/ 26 декабря 2018

Это может помочь вам в идентификации мониторов.

this.Location = Screen.AllScreens[1].WorkingArea.Location;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...