Как установить положение окна WPF на дополнительном дисплее - PullRequest
18 голосов
/ 02 апреля 2012

У меня два дисплея.Я хочу сделать медиаплеер, и я хочу воспроизводить видео в полноэкранном режиме на моем дополнительном дисплее.Поэтому я пытаюсь сделать медиаплеер, используя WPF

. Вот код, который я написал до сих пор

Screen[] _screens = Screen.AllScreens;
System.Drawing.Rectangle ractagle = _screens[1].Bounds;
//player is  my window
player.WindowState = WindowState.Maximized;
player.WindowStyle = WindowStyle.None;

player.Left = ractagle.X;
player.Top = ractagle.Y;


// MediaControl is an media elements
MediaControl.Height = ractagle.Height;
MediaControl.Width = ractagle.Width;

Но почему-то он просто воспроизводится на моем первом дисплее.Любая помощь очень ценится.

Ответы [ 2 ]

18 голосов
/ 02 апреля 2012

Вы должны убедиться, что WindowStartupLocation установлен на Manual для формы, которую вы отображаете

Иначе ничто из того, что вы делаете, не повлияет на положение окна.

using System.Windows.Forms;
// reference System.Drawing
//

Screen s = Screen.AllScreens[1];

System.Drawing.Rectangle r  = s.WorkingArea;
Me.Top = r.Top;
Me.Left = r.Left;

Этот заголовок XAML окна, которое я использовал.

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="823" WindowStartupLocation="Manual">
    <Canvas Width="743">
        //Controls etc
    </Canvas>
</Window>
2 голосов
/ 21 марта 2018

5 лет спустя!Но для всех, кто сталкивается с этим, как я ...

Если вы не можете или не хотите добавлять ссылку на dll System.Windows.Forms полностью, вы можете использовать WpfScreenHelper by micdenny (поиск в NuGet)

  Screen screen = WpfScreenHelper.AllScreens[0];
  Left = screen.Bounds.Left;
  Top = screen.Bounds.Top;
  Width = screen.Bounds.Width;
  Height = screen.Bounds.Height;

Micdenny перенес помощник Windows Forms Screen для WPF.Это замечательно, когда у вас есть другие рефери WPF, которые не очень хорошо работают с формами (например, WPF Live-Charts).

...