Окно WPF с Style=None покрывает панель задач при Увеличении после инициализации приложения

Я хочу достигнуть того же эффекта как Windows Media Player или Flash player На базе браузера, которые поднимают ВСЕ (даже, панель задач видима), недвижимость при максимизации.

Это хорошо работает если WindowState установлен на Maximized и WindowStyle установлен на None в XAML, таким образом, приложение запускается в том состоянии. Проблема, я хочу запустить приложение в ограниченном окне и когда пользователь выбирает, максимизируйте, как указано выше. В StateChanged обработчик я проверяю на Maximized состояние и если это верно я установил WindowStyle кому: None. Это имеет эффект максимизации окна, но не покрытия панели задач. Следующий код сделает эту работу, как я хочу, но это - взлом, и я хотел бы очистить его:

if (WindowState == WindowState.Maximized)
{
    m_videoWindow.Maximize();

    WindowStyle = WindowStyle.None;

    //the following makes this work but I would like to clean it up
    Hide();
    Show();
}

ОТРЕДАКТИРУЙТЕ Это (с 2006, когда все еще в CTP) упоминает проблему, и кто-то от MS заявляет, что они надеются улучшить полноэкранную поддержку в следующей версии, эти улучшения были сделаны?

20
задан Community 1 September 2015 в 17:35
поделиться

2 ответа

Эта статья все объясняет: Максимальное окно (с WindowStyle=None) с учетом Taskbar.

Также стоит проверить: Custom Window Chrome в WPF.

Edit: Новинкой стала библиотека WPF Shell Integration Library, позволяющая полностью переделать хромированные окна без головной боли при перестановке, изменении размера и т.д.

Edit 2015: Библиотека интеграции Shell теперь интегрирована в WPF, а MS убрала код

.
14
ответ дан 30 November 2019 в 01:10
поделиться

Я не знаю, это нормально для вас, но вы можете изменить размер окна, чтобы иметь тот же размер, чем рабочая зона (то есть в большинстве случаев, все экран, кроме Наседанию панели задач) и найдите его в 0,0 (сверхуголевый угол):

Width = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width; 
Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height; 
Left = 0; 
Top = 0;

Точное определение для свойства WorkAREA (из MSDN):

получает рабочую зону дисплея. Рабочая зона представляет собой область рабочего стола дисплея, исключая панели задач, пристыкованных окон и стыковых инструментов.

Надеюсь, это поможет

1
ответ дан 30 November 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: