所有代码都运行良好,但在我创建帐户并按下登录按钮后,我在用侧菜单加载新页面时遇到问题。不知道该怎么办。我刚接触过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:
如何根据登录状态/角色限制/控制用户可以访问的导航路线?