2015-08-02 22 views
14

Einige Apps im Windows Store haben zusätzlich zur Schaltfläche Minimieren, Maximieren und Schließen in der Titelleiste eine Vollbild-Schaltfläche. Diese Schaltfläche ähnelt der Schaltfläche "Vollbild beenden", die jede App in der Titelleiste hat, wenn die Vollbildansicht aktiviert ist. Ist das eine Systemsteuerung und wie kann ich sie in meiner C# Universal App verwenden?Windows Universal App Vollbild Button

+0

Ist einer der Antworten eine mögliche Lösung beziehen? – Herdo

+0

Werfen Sie einen Blick auf [das] (https://marcominerva.wordpress.com/2015/07/09/full-screen-mode-in-windows-10-universal-apps/) – Corcus

Antwort

7

Sie müssen die Window.SetTitleBar Methode verwenden, um Ihr gewünschtes Verhalten zu erreichen. Daher müssen Sie einige Schritte ausführen:

Aktivieren Sie zunächst die Ansicht, um in die Titelleiste zu erweitern. Bitte beachten Sie, dass Sie nur den linken Teil der Titelleiste einstellen können. Die minimieren, Maximize und Schließen Tasten wird noch da sein:

CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true; 

Nachdem Sie haben festgelegt, dass Sie rufen Sie die Window.SetTitleBar Methode mit einem UIElement:

Window.Current.SetTitleBar(myTitleBar); 

Wo, wie myTitleBar könnte so aussehen:

<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 

Eine erweiterte Anleitung von Marco Minerva (einschließlich eines netten XAML-Verhaltens, das diesen Anwendungsfall noch besser zwickt) finden Sie unter here.

+0

Danke, ich werde versuchen, dies anzupassen für mein Projekt (DockPanel ist nicht verfügbar für Windows Universal Apps) – Joe300

+0

@ Joe300 Mein schlechtes. Ich lege es einfach hin, um das Layout zu demonstrieren :) – Herdo

4

Ich habe eine FullScreenModeTitleBarBehavior (zusammen mit einer FullScreenModeTitle Steuerung) gemacht, die nur tun könnte, was Sie wollen.

enter image description here

Das Verhalten muss auf eine Haupt Page befestigt werden und ermöglicht es Ihnen, die Vordergrund- und Hintergrundfarben des TitleBar angeben. Wenn Sie mehr Farben benötigen, können Sie dem Verhalten einfach weitere Eigenschaften hinzufügen.

Das System funktioniert so, dass das Verhalten die Content aus den Page in die FulScreenModeTitle Kontrolle bewegen, die im Grunde einen benutzerdefinierten TitleBar mit den bewegten Content komponiert.

// 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; 

Sie können den vollständigen Quellcode über here in GitHub finden. Beachten Sie auch, dass diese Lösung von diesem speziellen sample aus dem GitHub-Repository von Microsoft inspiriert wurde.


Einige Probleme die ich gefunden habe bisher

Sie vielleicht schon bemerkt haben gibt es eine Lücke zwischen unseren benutzerdefinierten Vollbild-Modus-Taste und die minimieren Taste. Leider können Sie es nicht weiter reduzieren, da dieser Platz vom System reserviert wird (Weitere Informationen finden Sie unter SystemOverlayRightInset). Wenn Sie die benutzerdefinierte Schaltfläche näher verschieben, schlägt der Treffertest fehl, was es unclickable macht.

Auch habe ich festgestellt, dass, wenn Sie die benutzerdefinierte Schaltfläche verwenden aus dem vollen Bildschirm zu verlassen, diese drei Systemtasten dysfunktional sein werden, bis Sie die TitleBar den Bildschirm zu maximieren klicken verdoppeln. Dies könnte ein Fehler sein. Zum Glück, wenn der Bildschirm im Vollbildmodus ist, wird die Maximieren-Taste durch eine Ausfahrt Vollbild-Taste ersetzt, so können wir einfach unsere benutzerdefinierte Schaltfläche verstecken und lassen Sie das System den Ausgang behandeln.

+1

Schöne Lösung, aber die Probleme, die Sie gefunden haben, sind ziemlich wichtig. Und tatsächlich existiert das zweite Problem auch, wenn Sie den Vollbildmodus über die Systemschaltfläche beenden. Hast du das seither geschafft? –

0

Es kann bis zu 3 Arten von Vollbildmodus unterscheiden 1. Vollbildmodus aufrufen und beenden. 2. Reagieren auf Änderungen im Vollbildmodus. 3. Starten im Vollbildmodus.

Sie diese URL für Ihre Frage 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); 
      } 
     } 
Verwandte Themen