私は2つのディスプレイを持っています。メディアプレーヤーを作りたいのですが、セカンダリディスプレイでビデオをフルスクリーンで再生したいと思います。だから私は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;
しかし、どういうわけか、それは私の最初のディスプレイで再生されているだけです。どんな種類の助けも大歓迎です。
表示しているフォームの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>
5年後!しかし、私がしたようにこれに遭遇する他の誰かのために...
System.Windows.Forms dll参照全体を追加できない、または追加したくない場合は、 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は、WPF用のWindowsフォーム画面ヘルパーを移植しました。これは、フォームでニースを再生しない他のWPF参照がある場合に優れています(WPFライブチャートなど)。