【问题标题】:Xamarin Pass Entry Value to new page from oldXamarin 将条目值从旧页面传递到新页面
【发布时间】:2019-02-15 02:19:13
【问题描述】:

嗨,我有一个页面让用户填写他们的快速姓名和姓氏,然后当他们点击下一步按钮时,它会执行:

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;

【问题讨论】:

    标签: c# xamarin xamarin.forms


    【解决方案1】:

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

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

    我建议将 MVVM 与 Prism 库一起使用,这将真的让您的 Xamarin.Forms 生活更轻松。无论如何,如果您现在不能或不想(最终取决于您),仍然有解决方案。由于您的属性是公开的,您可以在导航到VisitorHSAgreement

    之前设置它们
    var page = new VisitorHSAgreement()
               {
                   VisitorFirstName = FirstNameEntry.Text,
                   VisitorLastName = LastNameEntry.Text
               };
    
    await Navigation.PushModalAsync(page);
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多