2012-04-24 55 views
1

我正在嘗試創建一個WPF演示應用程序,其中主屏幕上的主窗口將用於更新演示窗口上的內容,該窗口需要位於輔助屏幕上。我正在尋找可以幫助我做到這一點的示例或代碼片段。在兩個單獨的屏幕上加載兩個窗口

enter image description here

而且我已經嘗試以下並不起作用:

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(); 
      } 
     } 
+0

做什麼?創建兩個窗口?移動它們? – Jon 2012-04-24 14:56:14

+0

我們不需要知道顯示器的尺寸/位置嗎? – 2012-04-24 14:56:32

+0

有一些關於盧克payne:http://www.lukepaynesoftware.com/articles/programming-tutorials/multi-monitor-programming-in-c/ – HW90 2012-04-24 15:00:10

回答

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; 


} 

關注這個link瞭解更多詳情。

1

使用你能弄清楚其分辨率多少的屏幕也有,什麼是System.Windows.Forms.Screen.AllScreens靜態屬性。找出哪個是PrimaryScreen,並將輔助窗口設置爲正確的大小和位置。 查看更多信息:Trouble creating a WPF window in a secondary monitor

然後,只需創建兩個單獨的窗口類,以不同的方式綁定DataContext的綁定。例如:

<Window Title="Primary Window"> 
    <TextBox Text="{Binding Header}"/> 
</Window> 
<Window Title="Presentation Window"> 
    <TextBlock Content="{Binding Header}"/> 
</Window> 
+0

這不是我想要的,我想要兩個物理位置兩個獨立的顯示器上的窗戶 – jmogera 2012-04-24 15:13:50

+1

抱歉,您在問題的其餘部分進行了編輯,這使我很難回答。 – Kolky 2012-04-24 15:15:51

+0

從我的最後道歉。我後來意識到我應該提供更多的細節信息。 – jmogera 2012-04-24 15:22:12