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

问题描述 投票:0回答:1

我有三页,我在第二页上输入数据,并将其传输到第一页,同时返回它,这没有问题,我使用导航,如下所示:

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,但是到目前为止我还不了解它是如何工作的。请告诉我如何做得更好:)

xamarin mvvm xamarin.forms data-transfer
1个回答
0
投票

我在这里让一些例子

在第一页上(称为第二页)

  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();

        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.