C# 如何将参数从母版页传递到xamarin表单中的所有页
我有母版页,点击按钮后会出现 这是我的密码 App.csC# 如何将参数从母版页传递到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
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页面中使用此消息中心代码吗?您可以在任何需要在不同视图模型之间进行通信的地方使用它