Как полностью убрать titlebar в окне на Windows

Рейтинг: 1Ответов: 1Опубликовано: 28.05.2023

Когда я делал возможность перехода в полноэкранный режим, то столкнулся с проблемой на Windows: когда у overlappedPresenter ставишь ExtendsContentIntoTitleBar на false, то на месте titlebar появляется просто черная область, которую фиг уберёшь, ведь эта область под кастомный titlebar, сделанный разработчиками MAUI, т.к ExtendsContentIntoTitleBar по умолчанию стоит на true.
Кучу всего перепробовал, но так и не удалось её убрать.
Можно, конечно, добавить в Platforms/Windows/App.xaml такой код и проблема уйдёт:

<maui:MauiWinUIApplication.Resources>
    <DataTemplate x:Key="MauiAppTitleBarContainerTemplate"/>
</maui:MauiWinUIApplication.Resources>

Но мне надо избавляться от этой чёрной области динамически, чтоб её не было лишь тогда, когда мне надо (например: при нажатии кнопки), а когда не надо, то она возвращалась.

Ответы

▲ 0Принят

Я нашёл решение моей проблемы сам, ведь никто даже слова не написал под моим вопросом.
Надо написать вот такой код:

var mauiTitleBar = typeof(MauiWinUIWindow).GetProperty("MauiCustomTitleBar", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(someWinUIWindow/*экземпляр вашего WinUI окна*/) as Microsoft.UI.Xaml.Controls.ContentControl;
//если надо скрыть область под кастомный titlebar
mauiTitleBar.MinHeight = mauiTitleBar.MaxHeight = 0;
//если надо вернуть область под кастомный titlebar
mauiTitleBar.MinHeight = mauiTitleBar.MaxHeight = 30;

Таким образом можно скрывать и возвращать область под кастомный titlebar.