我是 Xamarin 表单的新手,我有创建登录页面的要求,该页面记录了两种用户类型(客户、管理员)。之后,它将用户登录到他们的个人资料。问题是每个配置文件都有不同的弹出项。所以我不知道如何实现这一目标以及最佳实践是什么。在这里展示这个想法是一张图片。
问问题
137 次
2 回答
0
在您的登录按钮中,您可以在 XAML 中执行以下操作:
<Button ... Clicked="Login_Clicked" ... />
对于这个用户名,如果是管理员或客户,您可以检查您的数据库并返回一个值以了解它。创建两个页面(AdminPage 和 CustomerPage),并在您的代码隐藏中:
private async void Login_Clicked(object sender, System.EventArgs e)
{
if (Database.CheckUser() == "admin"){
Application.Current.MainPage.Navigation.PushAsync(new AdminPage());
} else {
Application.Current.MainPage.Navigation.PushAsync(new CustomerPage());
}
}
如果您不想创建两个页面,则可以创建一个页面(UserPage),通过验证用户是什么,然后在您的代码隐藏中设置按钮/标签及其功能,例如:
UserPage.xaml.cs
public UserPage(string checkUser){
if(checkUser == "admin"){
ProcessAdmin();
}
else{
ProcessCustomer();
}
}
ProcessAdmin(){
btn1.Text = "Admin Profiler";
btn2.Text = "Home Page";
...
...
btn1.Clicked => (s,e) {
//do something for admin profiler button
};
}
于 2021-10-27T19:24:50.577 回答
0
FlyoutPage 中有两种页面:Flyout和Detail,因此您可以根据用户的角色进行更改。这是一个例子:
** FlyoutPage :**设置flyout依赖于构造函数中设置的标志
public partial class FlyoutMainPage : FlyoutPage
{
public FlyoutMainPage(bool flag)
{
InitializeComponent();
if (flag)
{ Flyout = new MenuPage1();
Detail = new NavigationPage(new TestPage1());
}
else
Flyout = new MenuPage2();
Detail = new NavigationPage(new TestPage1());
}
}
}
导航:根据动作设置标志值
async void Button_Clicked(System.Object sender, System.EventArgs e)
{
await Navigation.PushAsync(new FlyoutMainPage(true));
}
async void Button_Clicked_1(System.Object sender, System.EventArgs e)
{
await Navigation.PushAsync(new FlyoutMainPage(false));
}
}
于 2021-10-28T06:51:25.783 回答