Xamarin在登录后形成侧菜单



所有代码都运行良好,但在我创建帐户并按下登录按钮后,我在用侧菜单加载新页面时遇到问题。不知道该怎么办。我刚接触过xamarin形式。

Login.cs

private  void Button_Clicked_Login(object sender, EventArgs e)
{
string dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "UserDataBase.db");
SQLiteConnection db = new SQLiteConnection(dbpath);
RegistrationTable myquery = db.Table<RegistrationTable>().Where(u => u.Login.Equals(EntryUser.Text) && u.Password.Equals(EntryPassword.Text)).FirstOrDefault();
if (myquery != null)
{
Navigation.PushModalAsync(new NavigationPage(new HomePage()));
}
else
{
Device.BeginInvokeOnMainThread(async () =>
{
bool result = await DisplayAlert("", "", " ", "Cancel");
if (result)
{
await Navigation.PushModalAsync(new NavigationPage(new LoginPage()));
}
else
{
await Navigation.PushModalAsync(new NavigationPage(new LoginPage()));
}
});
}
}

主页只是外壳

<Shell.FlyoutHeader>
<local:HeaderView/>
</Shell.FlyoutHeader>
<FlyoutItem Title="LeftSideMenu"
Shell.TabBarIsVisible="False"
FlyoutDisplayOptions="AsMultipleItems">
<Tab Icon="calculator.png" Title="Calculator">
<ShellContent ContentTemplate="{DataTemplate local:CalculatorPage}"/>
</Tab>
</FlyoutItem>

推送HomePage时没有等待PushModelAsync()的调用,而且Button_Clicked_Login((的签名中缺少async关键字。

private  async void Button_Clicked_Login(object sender, EventArgs e)
{
...
await Navigation.PushModalAsync(new NavigationPage(new HomePage()));
...
}

另一种方法是使用绑定显示/隐藏页面和Shell导航,将Shell(也包括登录页面(作为初始MainPage:

如何根据登录状态/角色限制/控制用户可以访问的导航路线?

相关内容

  • 没有找到相关文章

最新更新