如何将数据从一个页面传输到另一个xamarin

How to transfer data from one page to another xamarin

我的是三页,我在第二页输入数据,然后转到第一页,同时返回,这样没有问题,我用导航,像这样:

private async void OnSaveTitleButtonCliked(object sender, EventArgs e)
    {
        var title_data = new LabelViewModel
        {
            Label = editor.Text,
            Date = DateTime.Now
        };
        var mainpage = new MainPage();
        mainpage.BindingContext = title_data;
        await Navigation.PushAsync(mainpage);

    }

但是我还需要把这个数据转移到第三页,这样我就可以从第一页去那里看看,我试过mvvm,但到目前为止我还不明白它是如何工作的。 请告诉我如何做得更好:)

我会在这里举一些例子

第一页(谁叫第二页)

  private async void MenuLista(object sender, EventArgs e)
        {
            var item = (ModelosPPP)((Button)sender).BindingContext;
            if (PopupRunnning != false)
                return;

            var page = new MenuListSV(item);
            PopupRunnning = true;

            page.Action += async (a, b) =>
            {
                switch (b)
                {
                    case 1:
                        await DisplayAlert("PDF", null, "ok");
                        break;
                    case 2:
                        await DisplayAlert("Reenviar", null, "ok");
                        break;
                    case 3:
                        await DisplayAlert("Excluir", null, "ok");
                        break;
                }

            };

            page.Disappearing += (c, d) =>
            {
                PopupRunnning = false;

            };

            await PopupNavigation.Instance.PushAsync(page);

        }

在第二页

public partial class MenuListSV : PopupPage
    {
        public MenuListSV(Models.ModelosPPP obj)
        {
            InitializeComponent();
            BindingContext = obj;
        }


        public EventHandler<int> Action;

        public async void MenuChoice(object sender, EventArgs e)
        {
            var btn = sender as Button;
            switch (btn.Text)
            {
                case "Abrir PDF":
                    Action?.Invoke(this, 1);
                    break;
                case "Reenviar":
                    Action?.Invoke(this, 2);
                    break;
                case "Excluir":
                    Action?.Invoke(this, 3);
                    break;

            }
            await PopupNavigation.Instance.PopAsync();

        }

    }

通过构造函数传递数据:

第 1 页:

private async void GoToPage2(object sender, EventArgs e)
{
    var title_data = new LabelViewModel
    {
        Label = editor.Text,
        Date = DateTime.Now
    };

    //Pass the model here
    var Page2 = new Page2(title_data);           
    await Navigation.PushAsync(Page2);

}

第 2 页:

public partial class Page2 : ContentPage
{

    public LabelViewModel model;

    public Page2(LabelViewModel m) {

        InitializeComponent();

        this.model = m;
        //You can use your model here

    }
}

通过public传递数据 属性:

第 1 页:

private async void GoToPage2(object sender, EventArgs e)
{
    var title_data = new LabelViewModel
    {
        Label = editor.Text,
        Date = DateTime.Now
    };
    var Page2 = new Page2();
    //Pass the model here
    Page2.model = title_data;
    await Navigation.PushAsync(Page2);

}

第 2 页:

public partial class Page2 : ContentPage
{

    public LabelViewModel model;
    public Page2()
    {
        InitializeComponent();

        //You can use your model here
        Console.WriteLine(model.Label);
        Console.WriteLine(model.Date);
    }
}

如果您有任何问题,请告诉我。