我之前的问题是,如何从ToolbarItem导航到另一个页面并保持导航栏存在。 :Xamarin portable project navigate with ToolbarItem to another page by using MasterDetailPage
现在,当我从项目列表中选择项目并且我想回到我的MainPage时遇到麻烦,但是我收到了这样的错误:System.Exception: Android only allows one navigation page on screen at a time
和MainPage页面出现了,但它冻结了,我现在看到导航栏上的2个按钮。但它应该只有一个。在MainPage中我称之为城市:
public partial class MainPage : MasterDetailPage
{ public MainPage()
{
InitializeComponent();
masterPage.ListView.ItemSelected += OnItemSelected;
CityClick.Clicked += async (sender, e) =>
{
await Detail.Navigation.PushAsync(new Cities());
};}}
然后,当我在Cities.xaml.cs时,我想回到MainPage()。此外,我还希望将我选择的项目值从列表传递到MainPage.xaml导航中的标签。第二个问题是当我从Cities.xaml.cs返回项目选择到MainPage()后,我收到了我之前提到的错误。这是我的城市课程:
public partial class Cities : ContentPage
{
public Cities()
{
InitializeComponent();
Label header = new Label
{
Text = ...
};
List<City> cities = new List<City>
{new City("City1"),
new City("City2")};
ListView listView = new ListView
{ItemsSource = cities,
ItemTemplate = new DataTemplate(() =>
{
Label nameLabel = new Label();
nameLabel.SetBinding(Label.TextProperty, "Name");
BoxView boxView = new BoxView();
return new ViewCell
{
...
};
...
{
Children =
{
...
}
};
listView.ItemSelected += async (sender, e) =>
{
if (e.SelectedItem == null)
{return;}
else
{
await Navigation.PushAsync(new MainPage());
}
};
}
class City
{public City(string name)
{
this.Name = name;
}
public string Name { private set; get; }
};}
这就是返回MainPage()时的外观,它会冻结所有内容并显示另一个标签:
编辑:关于@AkashAmin评论我从await Navigation.PushAsync(new MainPage());
更改为await Navigation.PopAsync();
并且效果非常好。现在,我仍然面临着从City类到MainPage类的消极价值的困境。
答案 0 :(得分:1)
我从我的城市课程导航回我的主页,从PushAsync
更改为PopAsync();
。感谢@Akash Amin提供的信息。这个等待的任务还解决了Navigation ToolbarItems中的重复标签问题。
此外,我解决了从Cities传递给MainPage类问题的价值。在此链接中,您可以看到解决此问题的所有演练:https://stackoverflow.com/a/37350738/3727758