Работа с двумя мониторами Wpf MVVM

69
04 мая 2021, 15:40

Можете подсказать, вот у меня есть 2 монитора и мне нужно по нажатию кнопки перенести окно WPF на другой монитор и при повторном нажатии кнопки вернуть обратно (на первоначальный монитор). Получается только перенести на второй монитор, а обратно не получается. Код который имеется на данный момент.

RefreshDisplayCommand = new RelayCommand( () => Display(Screen.AllScreens[1]));
private void Display(Screen screen = null)
    {
        if (screen == null)
        {
            if (Screen.AllScreens.Length>1) return;
            screen = Screen.AllScreens[1];
        }
        var bounds = screen.Bounds;
        mWindow.Left = bounds.Left + mWindow.Left;
        mWindow.Top = bounds.Top + mWindow.Top;
    }
Answer 1

При нажатии на кнопку проверяйте координаты вашего окна, в зависимости от от того больше ли Margin.Top или Margin.Left размера основного окна выполняйте перемещение: (В теории должно работать)

if(Screen.AllScreens.Length > 1)
{
    var a = Screen.AllScreens[0].WorkingArea;
    if (MainWindow.Margin.Left > a.Width || MainWindow.Margin.Top > a.Height)
    {
        RefreshDisplayCommand = new RelayCommand( () => Display(Screen.AllScreens[0]));
    }
    else 
    {
        RefreshDisplayCommand = new RelayCommand( () => Display(Screen.AllScreens[1]));
    }
}
READ ALSO
Создание нескольких picturebox

Создание нескольких picturebox

Разрабатываю игру flappy bird, столкнулся с такой проблемой, что не могу прорисовать трубы(PictureBox)Написал код для прорисовки труб, создал массивы,...

91
Хранение соли пароля

Хранение соли пароля

Где её хранить и в каком виде? В базе данных, в отдельной строке в таблице Users?

84
c# npgsql: Вылетает исключение

c# npgsql: Вылетает исключение

В разных функция запрашиваю данные из БД

102
Как узнать над каким gameobject находится мышь

Как узнать над каким gameobject находится мышь

У меня есть таблица с элементами в unityМне надо зафиксировать свайп над элементом в таблице, и в процессе свайпа его передвигать

98