Gezinti Sayfası
.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI), NavigationPage sayfalarda, ileri ve gerilerde istediğiniz gibi gezinebileceğiniz hiyerarşik bir gezinti deneyimi sağlar. NavigationPage , nesnelerin son gelen ilk çıkışı (LIFO) yığını Page olarak gezinti sağlar.
NavigationPage aşağıdaki özellikleri tanımlar:
BarBackground
türünde Brush, gezinti çubuğunun arka planını olarak Brushbelirtir.BarBackgroundColor
türünde Color, gezinti çubuğunun arka plan rengini belirtir.BackButtonTitle
, türündestring
, geri düğmesi için kullanılacak metni temsil eder. Bu ekli bir özelliktir.BarTextColor
türünde Color, gezinti çubuğundaki metnin rengini belirtir.CurrentPage
türünde Page, gezinti yığınının üstündeki sayfayı temsil eder. Bu salt okunur bir özelliktir.HasNavigationBar
, türündebool
, üzerinde bir gezinti çubuğunun NavigationPagebulunup bulunmadığını temsil eder. Bu özelliğin varsayılan değeridirtrue
. Bu ekli bir özelliktir.HasBackButton
, türündekibool
gezinti çubuğunun geri düğmesi içerip içermediğini gösterir. Bu özelliğin varsayılan değeridirtrue
. Bu ekli bir özelliktir.IconColor
türünde Color, gezinti çubuğundaki simgenin arka plan rengini tanımlar. Bu ekli bir özelliktir.RootPage
, türündeki Pagegezinti yığınının kök sayfasını temsil eder. Bu salt okunur bir özelliktir.TitleIconImageSource
türünde ImageSource, gezinti çubuğundaki başlığı temsil eden simgeyi tanımlar. Bu ekli bir özelliktir.TitleView
türünde View, gezinti çubuğunda görüntülenebilen görünümü tanımlar. Bu ekli bir özelliktir.
Bu özellikler nesneler tarafından BindableProperty desteklenir; bu da veri bağlamalarının hedefleri olabileceği ve stillendirilebileceği anlamına gelir.
NavigationPage sınıfı ayrıca üç olay tanımlar:
Pushed
bir sayfa gezinti yığınına gönderildiğinde oluşturulur.Popped
, gezinti yığınından bir sayfa açıldığında oluşturulur.PoppedToRoot
, gezinti yığınından kök olmayan son sayfa açıldığında oluşturulur.
Üç olay da, gezinti yığınından açılan sayfayı veya yığında yeni görünen sayfayı alan salt okunur Page bir özellik tanımlayan nesneleri alırNavigationEventArgs
.
Uyarı
NavigationPage .NET MAUI Shell uygulamalarıyla uyumsuzdur ve bir Shell uygulamasında kullanmaya NavigationPage çalışırsanız bir özel durum oluşur. Shell uygulamaları hakkında daha fazla bilgi için bkz . Shell.
Modsuz gezinti gerçekleştirme
.NET MAUI, modeless page navigation'ı destekler. Modsuz bir sayfa ekranda kalır ve siz başka bir sayfaya gidinceye kadar kullanılabilir durumda kalır.
genellikle NavigationPage bir nesne yığınında ContentPage gezinmek için kullanılır. Bir sayfa diğerine geçtiğinde, yeni sayfa yığına gönderilir ve etkin sayfa olur:
İkinci sayfa ilk sayfaya geri döndüğünde, yığından bir sayfa açılır ve en üstteki yeni sayfa etkin hale gelir:
, NavigationPage etkin sayfanın gezinti çubuğunun altında görüntülendiği bir gezinti çubuğundan oluşur. Aşağıdaki diyagramda gezinti çubuğunun ana bileşenleri gösterilmektedir:
Geri düğmesi ile başlık arasında isteğe bağlı bir simge görüntülenebilir.
Gezinti yöntemleri, türetilmiş türlerdeki Page özelliği tarafından Navigation
kullanıma sunulur. Bu yöntemler, sayfaları gezinti yığınına gönderme, sayfaları yığından çekme ve yığını işleme olanağı sağlar.
Bahşiş
yalnızca nesnelerle ContentPage doldurulması önerilirNavigationPage.
Kök sayfayı oluşturma
Birden çok sayfa etrafında yapılandırılmış bir uygulamanın her zaman gezinti yığınına eklenen ilk sayfa olan bir kök sayfası vardır. Bu, oluşturucu bağımsız değişkeni uygulamanın kök sayfası olan bir NavigationPage nesne oluşturarak ve sonuçta elde edilen nesneyi özelliğin App.MainPage
değeri olarak ayarlayarak gerçekleştirilir:
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new MainPage());
}
}
Dekont
RootPage
özelliğiNavigationPage, gezinti yığınındaki ilk sayfaya erişim sağlar.
Sayfaları gezinti yığınına gönderme
Geçerli sayfanın özelliğinde PushAsync
Navigation
yöntemi çağrılarak bir sayfaya gidilebilir:
await Navigation.PushAsync(new DetailsPage());
Bu örnekte, DetailsPage
nesne gezinti yığınına gönderilir ve burada etkin sayfa olur.
Dekont
yönteminde PushAsync
, gezinti sırasında sayfa geçişinin görüntülenip görüntülenmeyeceğini belirten bir bool
bağımsız değişken içeren bir geçersiz kılma vardır. PushAsync
Bağımsız değişkeni olmayan bool
yöntem, sayfa geçişini varsayılan olarak etkinleştirir.
Gezinti yığınından açılan sayfalar
Etkin sayfa, cihazın fiziksel düğmesi mi yoksa ekran düğmesi mi olduğuna bakılmaksızın bir cihazda Geri düğmesine basılarak gezinti yığınından açılır.
Program aracılığıyla önceki sayfaya dönmek için yöntemi PopAsync
geçerli sayfanın özelliğinde Navigation
çağrılmalıdır:
await Navigation.PopAsync();
Bu örnekte, geçerli sayfa gezinti yığınından kaldırılır ve en üstteki yeni sayfa etkin sayfa olur.
Dekont
yönteminde PopAsync
, gezinti sırasında sayfa geçişinin görüntülenip görüntülenmeyeceğini belirten bir bool
bağımsız değişken içeren bir geçersiz kılma vardır. PopAsync
Bağımsız değişkeni olmayan bool
yöntem, sayfa geçişini varsayılan olarak etkinleştirir.
Buna ek olarak, Navigation
her sayfanın özelliği, gezinti yığınındaki kök sayfa dışında tümünü gösteren bir PopToRootAsync
yöntem de sunar ve bu nedenle uygulamanın kök sayfasını etkin sayfa haline getirir.
Gezinti yığınını işleme
Navigation
özelliğiPage, gezinti yığınındaki sayfaların alınabildiği bir NavigationStack
özelliği kullanıma sunar. .NET MAUI gezinti yığınına erişimi korurken, Navigation
özelliği sayfaları ekleyerek veya kaldırarak yığını işlemek için ve RemovePage
yöntemlerini sağlarInsertPageBefore
.
yöntemi, InsertPageBefore
aşağıdaki diyagramda gösterildiği gibi, belirtilen bir sayfayı mevcut belirtilen sayfadan önce gezinti yığınına ekler:
yöntemi, RemovePage
aşağıdaki diyagramda gösterildiği gibi belirtilen sayfayı gezinti yığınından kaldırır:
Bu yöntemler birlikte, başarılı bir oturum açma sonrasında oturum açma sayfasını yeni bir sayfayla değiştirme gibi özel bir gezinti deneyimi sağlar.
Kalıcı gezinti gerçekleştirme
.NET MAUI kalıcı sayfa gezintiyi destekler. Kalıcı bir sayfa, kullanıcıların görev tamamlanana veya iptal edilene kadar kendi kendine gezinilemeyen bir görevi tamamlamalarını teşvik eder.
Kalıcı sayfa, .NET MAUI tarafından desteklenen sayfa türlerinden herhangi biri olabilir. Bir sayfayı modlu olarak görüntülemek için uygulama sayfayı kalıcı yığına göndererek etkin sayfaya dönüşmelidir:
Önceki sayfaya dönmek için uygulamanın geçerli sayfayı kalıcı yığından açması gerekir ve en üstteki yeni sayfa etkin sayfa olur:
Kalıcı gezinti yöntemleri, türetilmiş türlerdeki Page özelliği tarafından Navigation
kullanıma sunulur. Bu yöntemler, sayfaları kalıcı yığına ve pop sayfalarını kalıcı yığından gönderme olanağı sağlar. özelliği Navigation
, kalıcı yığındaki sayfaların alınabildiği bir ModalStack
özelliği de kullanıma sunar. Ancak, kalıcı yığın işleme gerçekleştirme veya kalıcı gezintide kök sayfaya giriş yapma kavramı yoktur. Bunun nedeni, bu işlemlerin temel platformlarda evrensel olarak desteklenmemesidir.
Dekont
NavigationPage Kalıcı sayfa gezintisi gerçekleştirmek için nesne gerekli değildir.
Sayfaları kalıcı yığına gönderme
Geçerli sayfanın özelliğinde PushModalAsync
Navigation
yöntemi çağrılarak bir sayfaya mod aracılığıyla gidilebilir:
await Navigation.PushModalAsync(new DetailsPage());
Bu örnekte nesne, DetailsPage
etkin sayfa haline geldiği kalıcı yığına gönderilir.
Dekont
yönteminde PushModalAsync
, gezinti sırasında sayfa geçişinin görüntülenip görüntülenmeyeceğini belirten bir bool
bağımsız değişken içeren bir geçersiz kılma vardır. PushModalAsync
Bağımsız değişkeni olmayan bool
yöntem, sayfa geçişini varsayılan olarak etkinleştirir.
Kalıcı yığından açılan sayfalar
Etkin sayfa, cihazdaki fiziksel bir düğme mi yoksa ekran düğmesi mi olduğuna bakılmaksızın bir cihazdaki Geri düğmesine basılarak kalıcı yığından açılır.
Program aracılığıyla özgün sayfaya dönmek için yöntemi PopModalAsync
geçerli sayfanın özelliğinde Navigation
çağrılmalıdır:
await Navigation.PopModalAsync();
Bu örnekte geçerli sayfa kalıcı yığından kaldırılır ve en üstteki yeni sayfa etkin sayfa olur.
Dekont
yönteminde PopModalAsync
, gezinti sırasında sayfa geçişinin görüntülenip görüntülenmeyeceğini belirten bir bool
bağımsız değişken içeren bir geçersiz kılma vardır. PopModalAsync
Bağımsız değişkeni olmayan bool
yöntem, sayfa geçişini varsayılan olarak etkinleştirir.
Geri düğmesini devre dışı bırakma
Android'de, cihazdaki standart Geri düğmesine basarak her zaman önceki sayfaya dönebilirsiniz. Kalıcı sayfanın sayfadan ayrılmadan önce kendi içinde bir görevin tamamlanması gerekiyorsa, uygulamanın Geri düğmesini devre dışı bırakması gerekir. Bu, kalıcı sayfadaki yöntemi geçersiz kılarak Page.OnBackButtonPressed
gerçekleştirilebilir.
Gezinti sırasında veri geçirme
Bazen bir sayfanın gezinti sırasında verileri başka bir sayfaya geçirmesi gerekir. Bunu yapmak için iki standart teknik, verileri bir sayfa oluşturucusunun içinden geçirmek ve yeni sayfaları BindingContext
verilere ayarlamaktır.
Sayfa oluşturucudan veri geçirme
Gezinti sırasında verileri başka bir sayfaya geçirmenin en basit tekniği, sayfa oluşturucu bağımsız değişkenidir:
Contact contact = new Contact
{
Name = "Jane Doe",
Age = 30,
Occupation = "Developer",
Country = "USA"
};
...
await Navigation.PushModalAsync(new DetailsPage(contact));
Bu örnekte, bir Contact
nesne öğesine DetailPage
oluşturucu bağımsız değişkeni olarak geçirilir. Nesne Contact
daha sonra tarafından DetailsPage
görüntülenebilir.
BindingContext aracılığıyla veri geçirme
Gezinti sırasında verileri başka bir sayfaya geçirmek için alternatif bir yaklaşım, yeni sayfaları BindingContext
verilere ayarlamaktır:
Contact contact = new Contact
{
Name = "Jane Doe",
Age = 30,
Occupation = "Developer",
Country = "USA"
};
await Navigation.PushAsync(new DetailsPage
{
BindingContext = contact
});
Gezinti verilerini bir sayfanın BindingContext
verileri aracılığıyla geçirmenin avantajı, yeni sayfanın verileri görüntülemek için veri bağlamayı kullanabilmesidir:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyMauiApp.DetailsPage"
Title="Details">
<StackLayout>
<Label Text="{Binding Name}" />
<Label Text="{Binding Occupation}" />
</StackLayout>
</ContentPage>
Veri bağlama hakkında daha fazla bilgi için bkz . Veri bağlama.
Gezinti çubuğunda görünümleri görüntüleme
Herhangi bir .NET MAUI View , bir NavigationPageöğesinin gezinti çubuğunda görüntülenebilir. Bu, ekli özelliği olarak Viewayarlanarak NavigationPage.TitleView
gerçekleştirilir. Bu ekli özellik herhangi bir Pageüzerinde ayarlanabilir ve öğesi üzerine NavigationPageNavigationPage gönderildiğinde Page özelliğin değerine saygı gösterir.
Aşağıdaki örnekte, ekli özelliğin NavigationPage.TitleView
nasıl ayarlanacağı gösterilmektedir:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="NavigationPageTitleView.TitleViewPage">
<NavigationPage.TitleView>
<Slider HeightRequest="44"
WidthRequest="300" />
</NavigationPage.TitleView>
...
</ContentPage>
Eşdeğer C# kodu:
Slider titleView = new Slider { HeightRequest = 44, WidthRequest = 300 };
NavigationPage.SetTitleView(this, titleView);
Bu örnekte, yakınlaştırmayı denetlemek için öğesinin NavigationPagegezinti çubuğunda bir Slider görüntülenir.
Önemli
Görünümün boyutu ve HeightRequest özellikleriyle WidthRequest belirtilmediği sürece birçok görünüm gezinti çubuğunda görünmez.
sınıfı sınıfından Layout View türetildiğinden TitleView
, ekli özellik birden çok görünüm içeren bir düzen sınıfını görüntüleyecek şekilde ayarlanabilir. Ancak, gezinti çubuğunda görüntülenen görünüm gezinti çubuğunun varsayılan boyutundan büyükse bu kırpmaya neden olabilir. Ancak Android'de, bağlanabilir özellik yeni yüksekliği temsil eden bir double
olarak ayarlanarak NavigationPage.BarHeight
gezinti çubuğunun yüksekliği değiştirilebilir.
Alternatif olarak, içeriğin bir kısmını gezinti çubuğuna, bazılarını sayfa içeriğinin en üstündeki gezinti çubuğuyla eşleştirdiğiniz bir görünüme yerleştirerek genişletilmiş gezinti çubuğu önerilebilir. Buna ek olarak, iOS'ta, gezinti çubuğunun en altındaki ayırıcı çizgi ve gölge, bağlanabilir özellik true
olarak ayarlanarak NavigationPage.HideNavigationBarSeparator
kaldırılabilir.
Bahşiş
BackButtonTitle
, Title
, TitleIconImageSource
ve TitleView
özelliklerinin tümü gezinti çubuğunda yer kaplayan değerleri tanımlayabilir. Gezinti çubuğu boyutu platforma ve ekran boyutuna göre farklılık gösterse de, bu özelliklerin tümünün ayarlanması, kullanılabilir alanın sınırlı olması nedeniyle çakışmalara neden olur. Bu özelliklerin bir bileşimini kullanmaya çalışmak yerine, yalnızca özelliğini ayarlayarak istediğiniz gezinti çubuğu tasarımına daha iyi ulaşabileceğinizi TitleView
fark edebilirsiniz.