Как перенести данные с одной страницы на другую xamarin - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть три страницы, я ввожу данные на второй странице и переношу их на страницу номер один, возвращаясь к ней одновременно, с этим нет проблем, я использую навигацию, например:

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, но до сих пор не понял, как он работает. Подскажите пожалуйста, как это сделать лучше:)

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Передать данные по конструктору:

На странице 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

    }
}

Передать данные попубличная собственность:

На странице 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);
    }
}

Сообщите мне, если у вас есть какие-либо вопросы.

0 голосов
/ 06 ноября 2019

Я приведу несколько примеров здесь

На первой странице (кто вызывает вторую)

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

        }

    }
...