Xamarin将条目值从旧值传递到新页面

时间:2019-02-14 15:30:16

标签: c# xamarin xamarin.forms

嗨,我有一个页面,我可以让用户填写其快速姓名和姓氏,然后当他们单击下一步按钮时,它将执行以下操作:

await Navigation.PushModalAsync(new VisitorHSAgreement());

到下一页,我想做的就是将它们的值显示在我目前已经尝试过的下一页的标签中,但现在又回来了,有人可以帮助我。

public string VisitorFirstName { get; set; }
public string VisitorLastName { get; set; }
    var visitorPage = new VisitorPage();

    VisitorFirstName = visitorPage.FindByName<Entry>("FirstNameEntry").Text;

2 个答案:

答案 0 :(得分:3)

VisitorPage上有一个类VisitorPage的实例。该实例包含控件,它们也是实例,并且可能在其属性中设置了值。

现在,您导航到VisitorHSAgreement,并尝试通过创建此类的 new 对象从VisitorPage获取值。此类的每个对象都有其自己的值,并且控件是新创建的。除非您在VisitorPage中创建一些静态字段,否则您将永远无法从新实例访问第一个实例中设置的值。您应该真的阅读OOP的基本概念,因为它确实是OOP101。

我建议将MVVM与Prism库一起使用,这将确实使您的Xamarin.Forms生活更加轻松。无论如何,如果您暂时不愿意(最终由您自己决定),仍然可以找到解决方案。由于您的财产是公开的,因此可以在导航到VisitorHSAgreement

之前 进行设置
var page = new VisitorHSAgreement()
           {
               VisitorFirstName = FirstNameEntry.Text,
               VisitorLastName = LastNameEntry.Text
           };

await Navigation.PushModalAsync(page);

答案 1 :(得分:0)

您需要学习如何使用面向对象的编程。 如上一个答案所述,您正在尝试从最近创建的对象(显然将为空)访问空值。虽然您需要做的是将值分配给要发送的对象,然后将该对象(已填充数据)发送到要使用它的页面。 然后在您的页面中,接收上一页发送的对象,并浏览其属性以获取您的值。