wpf dual monitor

wpf dual monitor
<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;
        }
    }

wpf dual monitor

 

原文链接: https://www.cnblogs.com/Fred1987/p/11633851.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    wpf dual monitor

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/402147

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月19日 上午9:37
下一篇 2023年4月19日 上午9:37

相关推荐