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 中,您可以看到我解决此问题的所有演练: