Xamarin portable,如何从选定的列表项导航回 MainPage 并传递值
Xamarin portable, how to navigate back from selected list item to MainPage and pass value
我之前的问题是,如何从 ToolbarItem 导航到另一个页面并保持导航栏存在。 :
现在,当我从项目列表中选择 select 项目并想返回到我的 MainPage 时,我遇到了麻烦,但我收到这样的错误: System.Exception: Android only allows one navigation page on screen at a time
和 MainPage 页面出现,但它冻结了,我现在看到 2导航栏上的按钮。但是在 MainPage 中应该只有 one.Here 我正在调用 Cities:
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()。我还想将我的 selected 项目值从列表传递到我在 MainPage.xaml 导航中的标签。第二个问题是当我在项目 select 之后从 Cities.xaml.cs 返回到 MainPage() 时,我收到了我之前提到的那个错误。这是我的城市 class:
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; }
};}
这就是 returns 到 MainPage() 时的样子它冻结所有内容并出现另一个标签:
编辑: 关于@AkashAmin 的评论,我从 await Navigation.PushAsync(new MainPage());
更改为 await Navigation.PopAsync();
,效果很好。现在我仍然对从 City class 到 MainPage class.
的 pasiing 值感到困惑
我通过从 PushAsync
更改为 PopAsync();
从我的城市 class 导航回我的主页。感谢@Akash Amin 提供的信息。这个等待的任务还解决了导航工具栏项目中的重复标签问题。
我还解决了从 Cities 到 MainPage 的值传递 class 问题。在此 link 中,您可以看到我解决此问题的所有演练:
我之前的问题是,如何从 ToolbarItem 导航到另一个页面并保持导航栏存在。 : System.Exception: Android only allows one navigation page on screen at a time
和 MainPage 页面出现,但它冻结了,我现在看到 2导航栏上的按钮。但是在 MainPage 中应该只有 one.Here 我正在调用 Cities:
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()。我还想将我的 selected 项目值从列表传递到我在 MainPage.xaml 导航中的标签。第二个问题是当我在项目 select 之后从 Cities.xaml.cs 返回到 MainPage() 时,我收到了我之前提到的那个错误。这是我的城市 class:
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; }
};}
这就是 returns 到 MainPage() 时的样子它冻结所有内容并出现另一个标签:
编辑: 关于@AkashAmin 的评论,我从 await Navigation.PushAsync(new MainPage());
更改为 await Navigation.PopAsync();
,效果很好。现在我仍然对从 City class 到 MainPage class.
我通过从 PushAsync
更改为 PopAsync();
从我的城市 class 导航回我的主页。感谢@Akash Amin 提供的信息。这个等待的任务还解决了导航工具栏项目中的重复标签问题。
我还解决了从 Cities 到 MainPage 的值传递 class 问题。在此 link 中,您可以看到我解决此问题的所有演练: