如何在Xamarin中与多个页面共享数据。形式

时间:2018-02-18 00:41:10

标签: c# xamarin xamarin.forms

我正在尝试使用Xamarin表单制作一个非常基本的flashcard应用程序。我对布局的想法是使用导航堆栈,其中主要内容页面有两个按钮。按钮1将您带到一个内容页面,您可以在其中输入/添加术语和定义,按钮2将您带到一个页面,您可以在其中查看您输入的术语和定义。我正在努力的部分是理解如何将存储的信息从一个页面传递到另一个页面?

为了与MVVM模式保持一致,我考虑创建一个数据库对象,只是一个包含字典的类,然后是一个与之链接的视图模型。但是,我不确定这些应该在哪里实例化,以便两个页面都可以访问它们,或者我需要使用的程序是什么? 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

根据您的应用程序结构,有很多方法可以做到这一点。

如果页面已打开,您可以使用 MessagingCenter 从一个ViewModel或Page发送到另一个

<强>发件人

MessagingCenter.Send<MainPage> (this, "Hi");

<强>接收机

MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
    // do something whenever the "Hi" message is sent
});

如果您正在创建页面,则可以通过Page Constructor传递数据,

新页面构造函数

public MyPage(string someText)
{
}

<强>发件人

await Navigation.PushAsync(new NavigationPage(new MyPage(<YourTextHere>)));

或通过财产

await Navigation.PushAsync(new NavigationPage(new MyPage() { SomneProperty = "blach" ));