У меня есть просмотр содержимого и левый навигационный ящик, который является достоянием на 4 страницах, а в представлении «Содержание» есть 4 значка, которые перемещаются между 4 различными страницами. Я хочу сохранить обзор содержимого и оставить навигационный ящик на всех 4 страницах. Я создаю страницу основных деталей и устанавливаю главную страницу в левый навигационный ящик, и каждый раз меняю страницу сведений. Я получил исключение, так как андроид может перемещаться только по одной странице одновременно, перемещаясь между несколькими страницами. Ниже мой корневой страницы и ContentView PageПеремещение между несколькими страницами в Xamarin.forms?
public class RootPage : MasterDetailPage
{
LeftNavigationPanel menuPage;
public RootPage(string detailSel)
{
menuPage = new LeftNavigationPanel(); //This is the left navigation class. rename later.
Master = menuPage;
if (detailSel.Equals(""))
{
var detail = new NavigationPage(new Tabpage());
Detail = detail; //homepage
detail.Icon = "leftnav.png";
App.navigation = detail.Navigation;
}
else if (detailSel.Equals("1"))
{
var detail = new NavigationPage(new Post());
Detail = detail; //homepage
detail.Icon = "leftnav.png";
App.navigation = detail.Navigation;
// System.Diagnostics.Debug.WriteLine("page1: " + Navigation.NavigationStack[Navigation.NavigationStack.Count-1]);
}
else if (detailSel.Equals("2"))
{
var detail = new NavigationPage(new TrackTabPage());
Detail = detail; //homepage
detail.Icon = "leftnav.png";
App.navigation = detail.Navigation;
// System.Diagnostics.Debug.WriteLine("page1: " + Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]);
}
}
}
ContentView
public partial class HomeContentView : ContentView
{
public HomeContentView()
{
InitializeComponent();
}
private async void read_click(Object sender, EventArgs e)
{
if (!((Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]) is Tabpage))
{
//await Navigation.PopAsync();
await Navigation.PushAsync(new RootPage(""));
// this.Navigation.PopAsync();
}
}
private async void post_click(Object sender, EventArgs e)
{
if (!((Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]) is Post))
{
System.Diagnostics.Debug.WriteLine("page: "+ Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]);
// await Navigation.PopAsync();
await Navigation.PushAsync(new RootPage("1"));
}
}
private async void track_click(Object sender, EventArgs e)
{
if (!((Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]) is TrackTabPage))
{
System.Diagnostics.Debug.WriteLine("page: " + Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]);
// await Navigation.PopAsync();
await Navigation.PushAsync(new RootPage("2"));
}
}
private void play_click(Object sender, EventArgs e) { }
}
Что я должен писать в конструкторе корневой страницы? могу я держать его как есть? – sid
Это зависит от того, как вы хотите перемещаться внутри своего приложения. В «нормальном» случае у вас есть одна «NavigationPage», в которую вы нажимаете новые страницы. При этом пользователь может вернуться назад. Я обновил свой ответ – Joehl
в своем приложении. На всех основных 4 страницах постоянно размещаются 4 значка, которые занимаются навигацией между 4-мя основными страницами ... и функциональность похожа ... вы можете перейти на любую страницу с любой текущей страницы щелкнув по соответствующему значку .. нет никого, кто решит поток .. как я могу сделать такие навигационные – sid