如何将参数传递给 AppShell TabBar 页面?
How to pass parameter to AppShell TabBar page?
我正在使用 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
我正在使用 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