Как сделать полноэкранный режим, не закрывая панель задач, используя: wpf c #

Мне нужно изменить панель задач Windows в моем приложении WPF. Для этого я установил WindowStyle="None", что означает отключение панели задач Windows, и сделал настраиваемую панель задач с кнопками для восстановления, сворачивания и закрытия приложения. Теперь моя проблема в том, что если приложение находится в максимальном режиме, я не вижу меню «Пуск» в Windows.

Я нашел здесь аналогичный вопрос, но когда я попробовал этот код, он не компилировался. полноэкранный режим, но не закрывайте панель задач

Как я могу создать свою собственную панель задач и видеть меню «Пуск» Windows, когда я его развернул? Есть ли в xaml окно свойств, которое может его установить?


person Evgeni Velikov    schedule 26.01.2016    source источник


Ответы (6)


Вы можете попробовать это:

MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;
person Pikoh    schedule 26.01.2016
comment
А как насчет случая с более чем 1 экраном? - person Valerii; 20.03.2018
comment
@Valerii, в этом случае вы можете попробовать коллекцию Screen.AllScreens. Вы можете зациклить эту коллекцию и получить доступ к screen.WorkingArea.Width и screen.WorkingArea.Height. Дайте мне знать, если это сработает, и я смогу отредактировать свой ответ. - person Pikoh; 21.03.2018
comment
@Pikoh Класс Screen является частью System.Windows.Forms, несовместимого с WPF. Альтернативой является SystemParameters.WorkAreaWidth и SystemParameters.WorkAreaHeight, что полезно, но, к сожалению, не в сценариях с несколькими дисплеями. - person 0tombo0; 08.06.2020

Нашел решение в CodeProject, которое может помочь: http://www.codeproject.com/Articles/107994/Taskbar-with-Window-Maximized-and-WindowState-to-N

WindowStyle="None"
WindowState="Maximized"
ResizeMode="NoResize"

и

this.Width = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width;
this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
this.Left = 0;
this.Top = 0;
this.WindowState = WindowState.Normal;
person M. Schena    schedule 26.01.2016

Вы можете легко добавить ограничения по высоте в XAML, добавив:

MaxHeight="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}}"

в тег Window.

person M Pavan Kumar    schedule 30.10.2020
comment
Самое простое решение! Спасибо - person Dairon; 09.02.2021

WindowStyle="None" 
AllowsTransparency="True"  

и

this.Top = 0;
this.Left = 0;
this.Width = SystemParameters.WorkArea.Width;
this.Height = SystemParameters.WorkArea.Height;
person Hafizul Amri    schedule 04.06.2017

Предлагаемое решение сработало для меня, но все еще нужно скорректировать значения установщика пикселей на dpi, чтобы окно имело правильный размер независимо от пользовательских настроек:

в xaml:

WindowStyle="None" WindowState="Maximized" ResizeMode="NoResize"

в коде:

public MainWindow()
{
    InitializeComponent();
    var graphics = System.Drawing.Graphics.FromHwnd(IntPtr.Zero);
    var pixelWidth = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width ;
    var pixelHeight = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
    var pixelToDPI = 96.0 / graphics.DpiX ;
    this.Width = pixelWidth * pixelToDPI;
    this.Height = pixelHeight * pixelToDPI;
    this.Left = 0;
    this.Top = 0;
    this.WindowState = WindowState.Normal;
}
person Nicolas    schedule 13.08.2017
comment
Для меня мне нужно установить MaxWidth и MaxHeight вместо ширины и высоты - person Bora Aydın; 14.09.2020

Решение для WPF

Допустим, мы хотим разместить mainWindow проекта WPF в правом нижнем углу экрана, не закрывая панель задач. Напишем это:

public MainWindow()
    {
        InitializeComponent();
        // set position of window on screen
        this.Left = SystemParameters.PrimaryScreenWidth - this.Width;
        this.Top = SystemParameters.WorkArea.Bottom - this.Height;
    }

this = наш объект (MainWindow) Сначала мы помещаем левый параметр, когда вычитаем позицию нашего окна (слева) из PrimarySrceenWidth. Затем мы делаем то же самое, чтобы получить самую низкую точку, вычитая высоту окон из рабочей области нижней части экрана. В рабочую область экрана не входит панель задач!

Наслаждайтесь!

Аври

person Dr. Avri    schedule 05.04.2018