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

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

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

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

5 ответов


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

MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;

найдено решение для 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;

WindowStyle="None" 
AllowsTransparency="True"  

и

this.Top = 0;
this.Left = 0;
this.Width = SystemParameters.WorkArea.Width;
this.Height = SystemParameters.WorkArea.Height;

предложенное решение работает для меня но все еще нужно исправить пиксель к значениям сеттера 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;
}

решение для WPF

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

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

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

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

Аври