我使用的是Xamarin表单Shell,我有一个登录名(ShellItem(,它是第一个出现的页面,当会话启动时,它会显示一个主页(FlyoutItem(,显示用户的点数数据。
问题是,当我打开汉堡菜单的其他页面并返回时,它们仍然在我停止的地方打开,当我注销并与另一个用户一起进入时也是如此,上一个会话的页面仍然使用来自上一个用户的相同数据打开。现在,我如何在每次您必须再次导航到同一页面时更新Shell的内容页面,以便再次加载启动会话的新用户的新数据。
我试过用从xaml.cs
protected override void OnAppearing()
{
base.OnAppearing();
ShowData();
}
但是它不允许我调用加载数据的viewModel的方法,因为View不应该知道viewmModel
当我使用弹出按钮创建新的应用程序(文件->新项目(时,Xamarin给了我示例代码,直到现在我仍在使用它,下面是代码(或者你可以尝试创建新项目并从那里看到它(:
public partial class ItemsPage : ContentPage
{
ItemsViewModel _viewModel;
public ItemsPage()
{
InitializeComponent();
BindingContext = _viewModel = new ItemsViewModel();
}
protected override void OnAppearing()
{
base.OnAppearing();
_viewModel.OnAppearing();
}
}
在ItemsViewModel中:
public void OnAppearing()
{
//do your code
}