2017-12-27 6 views

Antwort

0

ich Xamarin glaube nicht. Forms unterstützt zwei Masterseiten (Schubladen), aber Sie können eine Ansicht innerhalb Ihrer Seite hinzufügen, indem Sie TranslationX auf Width des Bildschirms setzen und dann eine ToolbarItem hinzufügen Wenn diese Taste gedrückt wird, wird die X der Ansicht in 0 umgewandelt und bei erneutem Drücken wird die Ansicht erneut auf die Bildschirmbreite umgerechnet. Der einzige Nachteil ist, dass sich diese Ansicht unterhalb der AppBar befindet (nicht wie bei Ihrem Bild, dass sich das Benachrichtigungsfeld vor der AppBar und der StatusBar befindet).

Der Code würde wie folgt sein:

Das Benachrichtigungsfeld Teil:

// I think 260 is a good width (but I didn't test), experiment and see 
var notificationsPanel = new StackLayout { WidthRequest = 260 }; 

// Needed because we don't know the Width yet 
SizeChanged += (sender, e) => 
{ 
    if(Width > 0) 
     notificationsPanel.TranslationX = Width; 
} 

Die Width Eigenschaft ist die Breite der Seite.


Der ToolbarItem Teil:

if(notificationsPanel.TranslationX > 0) 
    notificationsPanel.TranslateTo(Width - notificationsPanel.Width); 
else 
    notificationsPanel.TranslateTo(Width); // Here the Width will already be set 

Der Inhalt der Seite:

Content = new Grid 
{ 
    Children = 
    { 
     actualContent, 
     notificationsPanel 
    } 
} 

Hoffe, es hilft!


EDIT

Eine einfachere Idee wäre, Ihre Seite ohne das Benachrichtigungsfeld zu erstellen und diese Bibliothek verwenden: Rg.Plugins.Popup die NotificationsPanel als Popup hinzuzufügen, anstatt als Blick ins Innere der Seite .

Diese Bibliothek hat eine Wiki-Seite hier: Wiki. Sie können eine XAML-Seite für Ihr Popup erstellen und ein ToolbarItem auf der Seite "Root" hinzufügen. Wenn Sie darauf klicken, wird eine einfache Methode aufgerufen, die prüft, ob ein Popup angezeigt wird. Wenn dies nicht der Fall ist, fügen Sie es hinzu (eine toggle-ähnliche Methode). Etwas wie folgt aus:

if (PopupNavigation.PopupStack.Count > 0) 
    PopupNavigation.PopAsync(); 
else 
    PopupNavigation.PushAsync(new NotificationsPanel()); 

Wenn Sie nicht wissen, wie ein ToolbarItem hinzuzufügen, es ist so etwas wie dieses:

ToolbarItems.Add(new ToolbarItem 
{ 
    Text = "Notifications", 
    Icon = "notifications-icon.png" // change this based on your image requirements, Xamarin.Forms has more than one way to store images 
    Command = new Command(() => 
    { 
     if (PopupNavigation.PopupStack.Count > 0) 
      PopupNavigation.PopAsync(); 
     else 
      PopupNavigation.PushAsync(new NotificationsPanel()); 
    }) 
}); 

Wenn Sie mehr über Bilder mit Xamarin.Forms wissen: Working with Images

Das ist es.Wenn Sie möchten, können Sie Animationen hinzufügen (damit das NotificationsPanel von der rechten Seite des Bildschirms kommt) und in der PopupPage von NotificationsPanel sollten Sie darauf achten, dass die Ansicht nach rechts ausgerichtet ist und ein WidthRequest kleiner als die Bildschirmbreite ist.

Hoffe es hilft!

+0

Ich verstehe nicht wirklich, was ich tun muss, da ich ziemlich neu bin. Sollen alle diese Codes in die .xaml.cs-Datei unterhalb der InitializeComponent() -Methode eingefügt werden? – Scar

+0

Nein, ich bevorzuge es, C# anstelle von XAML zu schreiben, ich denke, es ist viel einfacher. Um dies mit XAML arbeiten zu können, müssten Sie in XAML ein Root-Layout erstellen (könnte ein einfaches Grid sein) und Ihr aktuelles XAML als Inhalt hinzufügen. Fügen Sie dann für den Code das notificationsLayout zur Root-Ansicht hinzu. Ich kann es jetzt nicht besser erklären, morgen werde ich meine Antwort mit einer ausführlichen Erklärung aktualisieren :) –

+0

Siehe meine neue Bearbeitung, das Endergebnis wird viel besser und einfacher zu implementieren sein. –

Verwandte Themen