2015-08-02 6 views
14

Некоторые приложения в Windows Store имеют кнопку Fullscreen, дополняющую кнопку «Свернуть, увеличить и закрыть» в панели заголовка. Эта кнопка похожа на кнопку полноэкранного выхода, которую каждое приложение имеет в панели заголовка, если включен полноэкранный режим. Это системный контроль, и как я могу использовать его в своем универсальном приложении C#?Windows Universal App Fullscreen Button

+0

ли какой-либо из предоставленных ответов возможное решение вашего вопроса? – Herdo

+0

Взгляните на [это] (https://marcominerva.wordpress.com/2015/07/09/full-screen-mode-in-windows-10-universal-apps/) – Corcus

ответ

7

Для достижения желаемого результата вам необходимо использовать метод 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.

+0

Спасибо, я постараюсь адаптировать это для моего проекта (DockPanel не доступен для Windows Universal Apps) – Joe300

+0

@ Joe300 Мой плохой. Я просто положил его туда, чтобы продемонстрировать макет :) – Herdo

4

Я сделал FullScreenModeTitleBarBehavior (наряду с управлением FullScreenModeTitle), который может просто сделать то, что вы хотите.

enter image description here

поведение должно быть присоединено к вашей основной 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 будет заменена на кнопку выхода , поэтому мы можем просто скрыть нашу пользовательскую кнопку и позволить системе обрабатывать выход.

+1

Хорошее решение, но проблемы, которые вы нашли, очень важны. И на самом деле вторая проблема существует и при выходе из полноэкранного режима с помощью кнопки системы. Вам удалось разобраться с этим? –

0

Он может различать 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); 
      } 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^