Как установить положение окна WPF во вторичном дисплее
У меня есть два дисплея. Я хочу создать медиаплеер, и я хочу воспроизвести видео в полноэкранном режиме на моем вторичном дисплее. Поэтому я пытаюсь сделать медиаплеер с помощью 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;
Но как-то его просто играли на моем первом показе.
Любая помощь очень ценится.
Ответы
Ответ 1
Вы должны убедиться, что 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
5 лет спустя! Но для всех, кто сталкивается с этим, как я...
Если вы не можете или не хотите добавлять полную ссылку на System.Windows.Forms dll, вы можете использовать WpfScreenHelper от 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).