2016-11-26 8 views
3

Ich bin praktisch neu zu Xamarin.Forms und ich entwickle eine ziemlich einfache Cross-Plattform-Anwendung. Die App zeigt gut genug in Android, aber in UWP gibt es eine dumme, leere Stelle. Das Projekt besteht aus einer TabbedPage mit 4 NavigationPages, um die darin enthaltenen Seiten zu verschieben und zu öffnen.Irritierende Leerzeichen zwischen Titelleiste und Tabs in Xamarin.Forms UWP-Projekt

Nach ein wenig graben in UWP-Plattform-Besonderheiten, konnte ich den Stil meiner Tabs ändern. Ich habe jetzt 3 Tage nach einer Lösung gesucht und es macht mich verrückt. Die einzige Lösung, die ich bisher gefunden habe (mit Hilfe von Live Visual Tree von VS 2015), ist die Sichtbarkeit Eigenschaft zu "Collapsed" von einer CommandBar (wie im 3. beigefügten Foto gezeigt) zu ändern. Aber das ist keine Lösung, denn sie verschwindet nur zur Laufzeit.

Kann jemand helfen? Vielen Dank im Voraus.

Android View, UWP View, Live Visual Tree

EDIT: Mein MainPage.xaml Code ist folgende:

<?xml version="1.0" encoding="utf-8" ?> 
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:local="clr-namespace:_TIF_Xamarin;assembly=_TIF_Xamarin" 
      x:Class="_TIF_Xamarin.MainPage"> 

    <!--4 different tabs, which also are Navigation Pages--> 
    <NavigationPage Title="Home"> 
    <x:Arguments> 
     <local:HomePage /> 
    </x:Arguments> 
    </NavigationPage> 

    <NavigationPage Title="Exhibitor"> 
    <x:Arguments> 
     <local:ExhibitorsPage /> 
    </x:Arguments> 
    </NavigationPage> 

    <NavigationPage Title="Exhibits"> 
    <x:Arguments> 
     <local:ExhibitsPage /> 
    </x:Arguments> 
    </NavigationPage> 

    <NavigationPage Title="More"> 
    <x:Arguments> 
     <local:MorePage /> 
    </x:Arguments> 
    </NavigationPage> 

</TabbedPage> 
+0

Könnten Sie bitte das Xamarin.Forms XAML-Layout posten, das Sie für die Seite verwenden? –

Antwort

1

Sie benötigen eine benutzerdefinierte TabbedPage und dann einen UWP-Renderer für sie zu schaffen .

Zuerst erstellen Sie eine CustomTabbedPage im PCL:

public class CustomTabbedPage : TabbedPage { } 

In XAML, benutzen Sie diese CustomTabbedPage anstelle des TabbedPage. Das gesamte Verhalten und die Benutzeroberfläche bleiben auf allen Plattformen gleich.

Jetzt erstellen Sie einen Renderer im Projekt UWP:

[assembly: ExportRenderer(typeof(CustomTabbedPage), typeof(CustomTabbedPageRenderer))] 

namespace App.UWP 
{ 

    public class CustomTabbedPageRenderer : TabbedPageRenderer 
    { 
     protected override void OnElementChanged(VisualElementChangedEventArgs e) 
     { 
      base.OnElementChanged(e); 
      Control.TitleVisibility = Windows.UI.Xaml.Visibility.Collapsed; 
     } 
    } 
} 

Wir haben die FormsPivot.TitleVisibility verwenden, um den Title Bereich zu verstecken.

+0

Vielen Dank für Ihre Antwort und Ihre Zeit. Ich hatte gehofft, Custom Renderer zu vermeiden, aber jetzt kann ich sehen, dass es wirklich notwendig ist. Ich werde dich über deinen Vorschlag informieren. – kkaragki

+0

habe ich alles genau so, wie du mir gesagt hast, aber in _this_ Linie: 'Control.TitleVisibility = Windows.UI.Xaml.Visibility.Collapsed;' die VS2015 zeigt mir eine Fehlermeldung: _Error CS1061 \t 'FormsPivot' tut enthält keine Definition für 'TitleVisibility' und keine Erweiterungsmethode 'TitleVisibility', die ein erstes Argument vom Typ 'FormsPivot' akzeptiert (fehlt eine using-Direktive oder eine Assemblyreferenz?) Sorry, Sie noch einmal zu stören – kkaragki

+0

Ist ist es möglich, dass Sie nicht die neueste Version von Xamarin.Forms von NuGet installiert haben? Ich habe den Xamarin.Forms GitHub überprüft und die Eigenschaft sollte tatsächlich da sein, also ist es ziemlich verwirrend :-) - https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Platform.WinRT .Phone/FormsPivot.cs –

Verwandte Themen