如何从我的 Login.cs 接收到 MasterPageDetail 的值?
Posted
技术标签:
【中文标题】如何从我的 Login.cs 接收到 MasterPageDetail 的值?【英文标题】:How can receive a value from my Login.cs to MasterPageDetail? 【发布时间】:2020-01-01 20:24:50 【问题描述】:当我登录到应用程序时,我需要从数据集中接收代码和用户名,但是当我将这些值从我的 LoginPage.cs 发送到我的 MasterPage.cs 时,它会收到 NULL。我做错了什么?
我有一个名为“Login”的类,它接收值,但不接收它们。
/*Code in the LoginPage.cs*/
var VService = DependencyService.Get<IntValidateLogin>();
string resultC = VService.UserCode(txtUser.Text, txtPwd.Text);
string resultN = VService.UserName(txtUser.Text, txtPwd.Text);
if (resultC == "FALSE" || resultN == "FALSE")
await DisplayAlert("Alerta", "Usted no tiene permisos para ingresar a la Aplicación Smart. Favor verifique sus credenciales", "Aceptar");
else
Login lc = new Login
LoginUserCode = resultC,
LoginUserName = resultN
;
await Navigation.PushModalAsync(new Views.MenuPage(), false);
/*Controller*/
public class Login
public string LoginUserCode get; set;
public string LoginUserName get; set;
/*MasterDetailPage.cs*/
Login lc;
public MenuPageDetail()
InitializeComponent();
lblName.Text = lc.LoginUserName; /*Here its the error because its null when the activity starts and it chashes*/
/菜单页面代码/
public partial class MenuPage : MasterDetailPage
public MenuPage()
InitializeComponent();
MasterPage.ListView.ItemSelected += ListView_ItemSelected;
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
var item = e.SelectedItem as MenuPageMenuItem;
if (item == null)
return;
var page = (Page)Activator.CreateInstance(item.TargetType);
page.Title = item.Title;
Detail = new NavigationPage(page);
IsPresented = false;
MasterPage.ListView.SelectedItem = null;
/XML/
<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SmartAPPVB.Views.MenuPage"
xmlns:pages="clr-namespace:SmartAPPVB.Views">
<MasterDetailPage.Master>
<pages:MenuPageMaster x:Name="MasterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<pages:MenuPageDetail />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
【问题讨论】:
您正在创建一个登录对象,但您没有对其进行任何操作。您没有将其传递给 MenuPage @Jason MenuPage.cs 它只是一个母版页,女巫像父母和孩子一样加载 MenuDetail,为什么我需要通过 MenuPage 传递它? 因为 LoginPage 调用 MenuPage。 LoginPage 没有直接引用 MenuDetail。您可以以不同的方式构建代码,但根据您发布的内容,我会这样做。 @Jason 好的,我会像你说的那样尝试管理它。 【参考方案1】:您实际上需要将您的 Login
对象传递给 MenuPage
Login lc = new Login
LoginUserCode = resultC,
LoginUserName = resultN
;
await Navigation.PushModalAsync(new Views.MenuPage(lc), false);
然后在MenuPage
的构造函数中
public MenuPage(Login login)
// do something with login here
【讨论】:
以上是关于如何从我的 Login.cs 接收到 MasterPageDetail 的值?的主要内容,如果未能解决你的问题,请参考以下文章