C# 如何将参数从母版页传递到xamarin表单中的所有页

C# 如何将参数从母版页传递到xamarin表单中的所有页,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我有母版页,点击按钮后会出现 这是我的密码 App.cs public App() { // The root page of your application MainPage = new NavigationPage(new Login()); } Login.cs public void button(object sender, EventArgs e) { MasterDetailPage fpm = new MasterDetailPage(); fp

我有母版页,点击按钮后会出现

这是我的密码

App.cs

public App()
 {
   // The root page of your application
   MainPage = new NavigationPage(new Login());
 }
Login.cs

public void button(object sender, EventArgs e)
 {
   MasterDetailPage fpm = new MasterDetailPage();
   fpm.Master = new MasterPage(**test.Text**) { Title = "Main Page" }; // You have to create a Master ContentPage()
   fpm.Detail = new NavigationPage(new PageOne()); // You have to create a Detail ContenPage()
   Application.Current.MainPage = fpm;
 }
从登录页面,我将参数传递到母版页(即,test.text),我想将此参数传递到母版页中的所有页面,但我不知道如何操作

MasterPage.cs

public MasterPage(string id)
 {
   InitializeComponent();
   BindingContext = new MasterViewModel();
 }
MasterViewModel.cs

public ICommand NavigationCommand
 {
  get
   {
     return new Command((value) =>
      {
        // COMMENT: This is just quick demo code. Please don't put this in a production app.
        var mdp = (Application.Current.MainPage as MasterDetailPage);
        var navPage = mdp.Detail as NavigationPage;
        // Hide the Master page
        mdp.IsPresented = false;
         switch(value)
          {
            case "1":
                    navPage.PushAsync(new PageOne());
                    break;
            case "2":
                    navPage.PushAsync(new PageTwo());
                    break;
          }
      });
   }
}
因此,基本上我需要的是在登录后,我想将id传递给Masterpage,这样Masterpage中的所有页面都可以获得该id,并且基于该id,我可以处理此项目。

您可以使用

您可以这样发送:

MessagingCenter.Send<MainPage> (this, "Hi");
MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
    // do something whenever the "Hi" message is sent
});
MessagingCenter.Send(这个“Hi”);
你会收到这样的信息:

MessagingCenter.Send<MainPage> (this, "Hi");
MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
    // do something whenever the "Hi" message is sent
});
MessagingCenter.Subscribe(这个“嗨”,发送者)=>{
//无论何时发送“Hi”信息,都要采取措施
});
别忘了退订:

MessagingCenter.Unsubscribe<MainPage> (this, "Hi");
MessagingCenter.Unsubscribe(这个“Hi”);

到底是什么问题?我们可以将
id
传递给
PageOne
PageTwo
的ctor吗?如果您想在所有页面中使用它,为什么不将它设置为
静态类中的
静态类
,您可以用于此类内容。或者创建一个
BaseViewModel
,每个
PageViewModel
都可以在我必须取消订阅的地方访问它?我必须在masterdetail页面中使用此消息中心代码吗?您可以在任何需要在不同视图模型之间进行通信的地方使用它