Некоторые приложения в Windows Store имеют кнопку Fullscreen, дополняющую кнопку «Свернуть, увеличить и закрыть» в панели заголовка. Эта кнопка похожа на кнопку полноэкранного выхода, которую каждое приложение имеет в панели заголовка, если включен полноэкранный режим. Это системный контроль, и как я могу использовать его в своем универсальном приложении C#?Windows Universal App Fullscreen Button
ответ
Для достижения желаемого результата вам необходимо использовать метод Window.SetTitleBar
. Поэтому вам нужно выполнить несколько шагов:
Сначала включите представление в строку заголовка. Обратите внимание, что вы можете установить только левую часть строки заголовка. Минимизация, Maximize и Закрыть кнопки все еще будет там:
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
После установки, что вы называете Window.SetTitleBar
метод с UIElement
:
Window.Current.SetTitleBar(myTitleBar);
Где как myTitleBar
может выглядеть так:
<Border x:Name="myTitleBar">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- Title -->
<TextBlock Grid.Column="0"
Text="..."/>
<!-- Custom buttons attached to the right side -->
<StackPanel Grid.Column="1"
Orientation="Horizontal">
<Button x:Name="FullScreenButton"/>
<!-- Use U+E740 FullScreen Icon for the button above -->
</StackPanel>
</Grid>
</Border
Расширенное руководство от Marco Minerva (в том числе хорошее поведение XAML, которое улучшит этот прецедент) можно найти here.
Я сделал FullScreenModeTitleBarBehavior
(наряду с управлением FullScreenModeTitle
), который может просто сделать то, что вы хотите.
поведение должно быть присоединено к вашей основной Page
и позволяет определить цвета переднего плана и фона в TitleBar
. Если вам нужно больше цветов, вы можете просто добавить больше свойств в поведение.
Как это работает в том, что поведение будет двигаться Content
из-за Page
в FulScreenModeTitle
управления, которые в основном сочиняет обычай TitleBar
с перемещенной Content
.
// Store the original main page content.
var mainPageContent = _mainPage.Content;
// Clear the content for now.
_mainPage.Content = null;
// Move the content of the main page to our title bar control.
_customTitleBar.SetPageContent(mainPageContent);
// Refill the content with our new title bar control.
_mainPage.Content = _customTitleBar;
Вы можете найти полный исходный код по here в GitHub. Также обратите внимание, что это решение было вдохновлено этим sample из репозитория Microsoft GitHub.
Некоторые вопросы я нашел до сих пор
Вы, наверное, уже заметили, что есть разрыв между нашей пользовательских полной кнопки режима экрана а кнопку минимизировать. К сожалению, вы не можете его уменьшить, потому что это пространство зарезервировано системой (подробнее см. В разделе SystemOverlayRightInset
). Если вы переместите пользовательскую кнопку, все будет поближе, проверка на результат не удастся, что сделает ее незаметной.
Также я обнаружил, что если вы используете пользовательскую кнопку, чтобы выйти из полного экрана, эти три кнопки система будет дисфункциональным, пока вы дважды щелкните по TitleBar
, чтобы максимизировать экран. Это может быть ошибкой. К счастью, когда экран находится в полноэкранном режиме, кнопка maximize будет заменена на кнопку выхода , поэтому мы можем просто скрыть нашу пользовательскую кнопку и позволить системе обрабатывать выход.
Хорошее решение, но проблемы, которые вы нашли, очень важны. И на самом деле вторая проблема существует и при выходе из полноэкранного режима с помощью кнопки системы. Вам удалось разобраться с этим? –
Он может различать 3 типа полноэкранного режима 1. Вход в полноэкранный режим и выход из него. 2. Ответ на изменения в полноэкранном режиме. 3. Запуск в полноэкранном режиме.
Вы можете обратиться к этому URL https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/FullScreenMode
var view = ApplicationView.GetForCurrentView();
if (view.IsFullScreenMode)
{
view.ExitFullScreenMode();
rootPage.NotifyUser("Exiting full screen mode", NotifyType.StatusMessage);
// The SizeChanged event will be raised when the exit from full screen mode is complete.
}
else
{
if (view.TryEnterFullScreenMode())
{
rootPage.NotifyUser("Entering full screen mode", NotifyType.StatusMessage);
// The SizeChanged event will be raised when the entry to full screen mode is complete.
}
else
{
rootPage.NotifyUser("Failed to enter full screen mode", NotifyType.ErrorMessage);
}
}
ли какой-либо из предоставленных ответов возможное решение вашего вопроса? – Herdo
Взгляните на [это] (https://marcominerva.wordpress.com/2015/07/09/full-screen-mode-in-windows-10-universal-apps/) – Corcus