Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在两个单独的屏幕上加载两个窗口_C#_Wpf_Mvvm - Fatal编程技术网

C# 在两个单独的屏幕上加载两个窗口

C# 在两个单独的屏幕上加载两个窗口,c#,wpf,mvvm,C#,Wpf,Mvvm,我正在尝试创建一个WPF演示应用程序,其中主屏幕上的主窗口将用于更新演示窗口上的内容,该窗口需要位于辅助屏幕上。我正在寻找样本或代码片段,可以帮助我做到这一点 此外,我尝试了以下操作,但不起作用: protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var screens = System.Windows.Forms.Screen.

我正在尝试创建一个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();
            }
        }
使用static属性,您可以计算出屏幕的数量及其分辨率。找出哪个是主屏幕,并将辅助窗口设置为正确的大小和位置有关更多信息,请参阅:

然后简单地创建两个单独的窗口类,以不同方式绑定DataContext的绑定。例如:

class DataContext
{
   public string Header { get; set; }
}


您可以这样使用屏幕对象

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;


}

按照此操作了解更多详细信息。

做什么?创建两个窗口?移动它们?我们不需要知道你显示器的大小/位置吗?卢克·佩恩(luke payne)说了些什么:这不是我想要的,我想要两个独立显示器上两个窗口的物理位置。很抱歉,你在剩下的问题中进行了编辑,这让我很难回答。我向你道歉。后来我意识到我应该提供更详细的信息。