0

我是 Xamarin 表单的新手,我有创建登录页面的要求,该页面记录了两种用户类型(客户、管理员)。之后,它将用户登录到他们的个人资料。问题是每个配置文件都有不同的弹出项。所以我不知道如何实现这一目标以及最佳实践是什么。在这里展示这个想法是一张图片。在此处输入图像描述

4

2 回答 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 中有两种页面:FlyoutDetail,因此您可以根据用户的角色进行更改。这是一个例子:

** 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 回答