我对MAUI比较陌生,我正尝试将登录页中收集的数据传递到选项卡页。我正尝试使用shell导航方法传递数据,但它似乎在我的任何选项卡页上都不可用。
导航代码:
await Shell.Current.GoToAsync($"//PortalTabs", true, new Dictionary<string, object>
{
//Data that must be passed to App page
{"User", user}
});
使用Maui社区工具包,在第一个选项卡(AppViewModel)上:
//Data brought forward from previous page
[QueryProperty(nameof(User), "User")]
public partial class AppViewModel : ViewModelBase
{
//Observable Properties
[ObservableProperty]
UserModel user;
public AppViewModel()
{
}
}
AppShell.xaml中的选项卡栏:
<!--Portal Tabs-->
<TabBar Route="PortalTabs">
<Tab Title="Apps">
<ShellContent ContentTemplate="{DataTemplate views:AppPage}"/>
</Tab>
<Tab Title="Profile">
<ShellContent ContentTemplate="{DataTemplate views:ProfilePage}"/>
</Tab>
<Tab Title="Settings">
<ShellContent ContentTemplate="{DataTemplate views:SettingsPage}"/>
</Tab>
</TabBar>
我正在尝试通过以下方式使用AppPage上的数据:
<Label Text = "{Binding User.Username}"
我错过了什么明显的东西吗?
2条答案
按热度按时间fhity93d1#
我发现了这个问题。路由必须是到需要数据的页面,而不是路由到TabBar。作为对Isidoros回答的回应:我的页面确实通过ViewModelBase从ObservableObject继承,并且我的绑定上下文已经设置在页面的代码后面。
工作导航:
添加到AppShell.xaml的路由:
szqfcxe22#
命令Shell.Current.GoToAsync将参数传递给页,而不是基础视图模型。请将代码移到后面的页代码中。
您的视图模型应该如下所示(注意参数userparam和ObservableObject继承类是MVVM工作所必需的):