Navigáció és Menü

Navigáció

 
- App.xaml.cs módosítása
public App()
{
    InitializeComponent();
    MainPage = new NavigationPage(new MainPage());
}
 
- Navigációs parancsok esetén, ha a Navigation.XXX nem alkalmazható, akkor Application.Current.MainPage.Navigation.XXX használata ajánlott - például publikus statikus függvényekben.
 
- Új oldalra történő ugrás
Navigation.PushAsync(new Menu());
 
- Vissza az előző oldalra
Navigation.PopAsync();
 
- Vissza a legelső oldalra (Előzmények törlését okozza!)
Navigation.PopToRootAsync();
 
- Kilépés a programból
System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow();
 
- Mostani oldal lekérdezése
// Lekérdezni az aktuális oldal indexét
int index = Navigation.NavigationStack.Count - 1;
 
// Ezen indexű oldal elmentése Page típusú változóba
Page currPage = Navigation.NavigationStack[index];
 
- Mostani oldal törlése
Navigation.RemovePage(this);
 
- XXX oldal beillesztése egy YYY oldal elé
Navigation.InsertPageBefore(new XXX(), new YYY());
 
- Navigációs sáv eltávolítása
NavigationPage.SetHasNavigationBar(this, false);
 

Menü alkalmazás

 
XAML
<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Projekt.Menu">
    <MasterDetailPage.Master>
        <ContentPage Title="Menü">
            <StackLayout>
                <StackLayout.Margin>
                    <OnPlatform x:TypeArguments="Thickness">
                        <On Platform="iOS" Value="0,20,0,0" />
                        <On Platform="Android" Value="0,0,0,0" />
                    </OnPlatform>
                </StackLayout.Margin>
                <!-- Ide jön a menü megjelenített elemei -->
            </StackLayout>
        </ContentPage>
    </MasterDetailPage.Master>
    <MasterDetailPage.Detail>
        <ContentPage/>
    </MasterDetailPage.Detail>
</MasterDetailPage>
 
C#
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace Projekt
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Menu : MasterDetailPage
    {
        public Menu()
        {
            InitializeComponent();
 
            // Külső navigáció sávjának eltüntetése, ha van alkalmazva belső navigáció
            NavigationPage.SetHasNavigationBar(this, false);
        }
    }
}
 
Alkalmazások közötti váltás belső navigációval
private void switchDetail(Page page)
{
    // Menü bezárás
    IsPresented = false;
 
    // Belső navigáció
    var navigationPage = Detail as NavigationPage;
 
    if (navigationPage != null)
    {
        // Ha már létezik ilyen navigáció, akkor ugrás az új oldalra
        navigationPage.PushAsync(page);
    }
    else
    {
        // Ha még nincs ilyen navigáció, akkor ennek a létrehozása
        Detail = new NavigationPage(page);
    }
}
 
Használat
switchDetail(new OtherPage());
- Ha egy másik oldalról akarjuk manipulálni ezt a belső navigációt, akkor célszerű a MessagingCenter használata ezen menü alkalmazáson belül
MessagingCenter.Subscribe<EventArgs>(this, "GoOtherPage", args =>
{
    switchDetail(new OtherPage());
});
 

 

Mobilos kategóriák: