<Window x:Class="DualMonitors.Views.WinLeft"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DualMonitors.Views"
mc:Ignorable="d" WindowState="Maximized" WindowStartupLocation="CenterScreen"
Title="WinLeft" Height="300" Width="300">
<Grid Background="Blue">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="Left" FontSize="50" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Button Grid.Row="2" Command="{Binding LeftCmd}" Content="Click Left" FontSize="50"/>
</Grid>
</Grid>
</Window>
<Window x:Class="DualMonitors.Views.WinRight"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DualMonitors.Views"
mc:Ignorable="d" WindowState="Maximized" WindowStartupLocation="CenterScreen"
Title="WinRight">
<Grid Background="Yellow">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="Right" FontSize="50" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<Button Grid.Row="2" Command="{Binding RightCmd}" Content="Click Right" FontSize="50"/>
</Grid>
</Grid>
</Window>
using DualMonitors.ViewModel;
using System.Windows;
namespace DualMonitors.Views
{
/// <summary>
/// Interaction logic for WinRight.xaml
/// </summary>
public partial class WinRight : Window
{
public WinRight()
{
InitializeComponent();
DualVM BDualVM = DualVM.GetDualVM();
this.DataContext = BDualVM;
}
}
}
using Prism.Commands;
using System.Windows;
namespace DualMonitors.ViewModel
{
public class DualVM
{
private static DualVM DualVMInstance;
public static DualVM GetDualVM()
{
object objLock = new object();
lock(objLock)
{
if(DualVMInstance==null)
{
DualVMInstance = new DualVM();
}
}
return DualVMInstance;
}
private DualVM()
{
//MessageBox.Show("Dual Monitor");
}
private DelegateCommand leftCmdValue;
public DelegateCommand LeftCmd
{
get
{
if(leftCmdValue==null)
{
leftCmdValue = new DelegateCommand(LeftCmdExecuted);
}
return leftCmdValue;
}
}
private void LeftCmdExecuted()
{
MessageBox.Show("Left Monitor");
}
private DelegateCommand rightCmdValue;
public DelegateCommand RightCmd
{
get
{
if(rightCmdValue==null)
{
rightCmdValue = new DelegateCommand(RightCmdExecuted);
}
return rightCmdValue;
}
}
private void RightCmdExecuted()
{
MessageBox.Show("Right Monitor");
}
}
}
public partial class App : System.Windows.Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
SetupWindows();
}
private void SetupWindows()
{
System.Windows.Forms.Screen mainScreen = Screen.AllScreens[0]; ;
WinLeft leftWin = new WinLeft()
{
WindowStartupLocation = WindowStartupLocation.Manual,
WindowState = System.Windows.WindowState.Normal,
Left = mainScreen.WorkingArea.Left,
Top = mainScreen.WorkingArea.Top,
Width = mainScreen.WorkingArea.Width,
Height = mainScreen.WorkingArea.Height
};
System.Windows.Forms.Screen secondaryScreen = Screen.AllScreens[1];
WinRight rightWin = new WinRight()
{
WindowStartupLocation = WindowStartupLocation.Manual,
WindowState = System.Windows.WindowState.Normal,
Left = secondaryScreen.WorkingArea.Left,
Top = secondaryScreen.WorkingArea.Top,
Width = secondaryScreen.WorkingArea.Width,
Height = secondaryScreen.WorkingArea.Height
};
leftWin.Show();
leftWin.WindowState = WindowState.Maximized;
rightWin.Show();
rightWin.WindowState = WindowState.Maximized;
rightWin.Owner = leftWin;
}
}