2012-04-24 53 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