我正在使用Xamarin Forms开发一个多平台应用程序,我需要将一个参数和用户信息从我的LoginPage传递到我的HarvestPage(顺便说一句,这是一个农民应用程序(。我使用的是MVVM体系结构,但没有MVVM框架。
因此,用户在LoginPage
中执行身份验证,然后应用程序导航到我的AppShell
,在那里我有4个底部选项卡。
在LoginPage.xaml.cs
中,我导航到ShellPage的第一个选项卡(此页面不需要参数(:
private async void OnLoginClicked(LoginViewModel sender, Usuario args)
{
Application.Current.MainPage = new AppShell(args);
await Shell.Current.GoToAsync("//market");
}
然后在我的AppShell.xaml
页面中,我声明我的选项卡的内容:
<TabBar>
<ShellContent Title="Market" Icon="exchange.png" ContentTemplate="{DataTemplate local:MarketPage}" Route="market" />
<ShellContent Title="Harvest" Icon="sugarcane.png" ContentTemplate="{DataTemplate local:HarvestPage}" Route="harvest" />
...
</TabBar>
在AppShell.xaml.cs
中,我配置了路由:
private Usuario _user;
public AppShell(Usuario user)
{
InitializeComponent();
_user = user;
Routing.RegisterRoute(nameof(HarvestPage), typeof(HarvestPage));
Routing.RegisterRoute(nameof(MarketPage), typeof(MarketPage));
...
}
用户信息被发送到AppShell.xaml.cs
,但我如何将用户参数传递到我的HarvestPage
?
我不能像其他问题中建议的那样使用GoToAsync
,因为没有导航按钮,从MarketPage到HarvestPage的导航是通过底部选项卡进行的。
您可以定义为public:
public Usuario User;
然后使用从HarvestPage
访问
(Shell.Current as AppShell).User