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
Antwort
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.
Ich habe eine FullScreenModeTitleBarBehavior
(zusammen mit einer FullScreenModeTitle
Steuerung) gemacht, die nur tun könnte, was Sie wollen.
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.
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? –
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);
}
}
Ist einer der Antworten eine mögliche Lösung beziehen? – Herdo
Werfen Sie einen Blick auf [das] (https://marcominerva.wordpress.com/2015/07/09/full-screen-mode-in-windows-10-universal-apps/) – Corcus