1

プライマリ画面のプライマリウィンドウを使用して、セカンダリ画面にある必要のあるプレゼンテーションウィンドウのコンテンツを更新するWPFプレゼンテーションアプリケーションを作成しようとしています。そのために役立つサンプルまたはコードスニペットを探しています。

ここに画像の説明を入力してください

また、私は次のことを試みましたが、機能しません。

protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            var screens = System.Windows.Forms.Screen.AllScreens;
            if (screens.Length > 1)
            {
                var window = new MainWindow
                {
                    WindowStartupLocation = WindowStartupLocation.Manual,
                    WindowState = WindowState.Maximized,

                    Top = screens[0].WorkingArea.Top,
                    Left = screens[0].WorkingArea.Left,
                    Topmost = true
                };
                window.Show();

                var pesentationWindow = new PresentationWindow
                {
                    WindowStartupLocation = WindowStartupLocation.Manual,
                    ShowInTaskbar = false,
                    Top = screens[1].WorkingArea.Top,
                    Left = screens[1].WorkingArea.Left,
                    Topmost = true
                };
                pesentationWindow.Show();
            }
        }
4

2 に答える 2

1

静的プロパティを使用するSystem.Windows.Forms.Screen.AllScreensと、画面の数とその解像度を把握できます。どちらが であるPrimaryScreenかを把握し、セカンダリ ウィンドウを正しいサイズと位置に設定します。詳細については、「セカンダリ モニターで WPF ウィンドウを作成する際の問題」を参照してください。

次に、DataContext のバインディングを異なる方法でバインドする 2 つの個別の Window クラスを作成するだけです。例えば:

class DataContext
{
   public string Header { get; set; }
}
<Window Title="Primary Window">
   <TextBox Text="{Binding Header}"/>
</Window>
<Window Title="Presentation Window">
  <TextBlock Content="{Binding Header}"/>
</Window>
于 2012-04-24T15:01:07.423 に答える
1

この方法で Screen オブジェクトを使用できます

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);

    Window1 w1 = new Window1();
    Window2 w2 = new Window2();


    Screen s1 = Screen.AllScreens[0];
    Screen s2 = Screen.AllScreens[1];

    Rectangle r1 = s1.WorkingArea;
    Rectangle r2 = s2.WorkingArea;

    w1.Top = r1.Top;
    w1.Left = r1.Left;

    w2.Top = r2.Top;
    w2.Left = r2.Left;

    w1.Show();
    w2.Show();

    w2.Owner = w1;


}

詳細については、このリンクをたどってください。

于 2012-04-26T07:52:37.287 に答える