【问题标题】:Passing data from platform specific page to PCL in Xamarin.Forms将数据从平台特定页面传递到 Xamarin.Forms 中的 PCL
【发布时间】:2018-10-24 03:41:57
【问题描述】:

我已经使用 PageRenderer 创建了一个特定于平台的页面,我需要在单击按钮时从该页面传回数据。

我看过使用 DependancyService 但我能找到的只是从 PCL 调用平台项目中的一个方法,我需要做相反的事情,这可能吗? 或者我会更好地建议使用传统的事件 - EventHandler,这是 Xamarin 中的首选方法还是在 Xamarim.Forms 中有更好的方法来处理这个?

需要传回的数据是一个对象;

public class CallAcknowledged
{
    public string CustomerName { get; set; }
    public DateTime CallAcknowledged { get; set; }
    public byte[] Signature { get; set; }
}

【问题讨论】:

  • 你可以在App.xaml.cspublic static List<string> Mylist;中声明public var而不是在android项目var data = App.Mylist;中访问它
  • 你可以使用Element对象来调用CustomPage上的方法
  • @MarkusMichel,感谢指向消息中心的指针。我可以在同一个项目中发送广告订阅消息,但如果我(在 PCL 项目中)订阅从 UWP 项目发送的消息,则不会发生任何事情。有什么我想念的吗?感谢所有帮助。
  • 您能否发布您用于订阅和发送消息的代码?也许在一个新问题中并在此处链接。在大多数情况下,当相应的类没有正确设置或不同时,消息中心无法工作。

标签: c# xamarin.forms


【解决方案1】:

我已经设法在 Xamarin 论坛上 @AlessandroCaliaro 的这篇帖子中找到了答案 https://forums.xamarin.com/discussion/70235/xamarin-forms-messagingcenter-between-two-differents-pages-projects

我需要使用 PCLProjectName.App 作为消息的来源,它可以实现梦想。

发件人

MessagingCenter.Send<MyMobileApp.App, string>((MyMobileApp.App)Xamarin.Forms.Application.Current, "Acknowledged", fullNameValue);

订阅者

MessagingCenter.Subscribe<MyMobileApp.App, string>((App)Application.Current, "Acknowledged", (sender, arg) =>
        {
            Debug.WriteLine("Full Name : " + arg);
        });

感谢@MarkusMichel 为我指明了正确的方向

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2015-04-01
    • 2016-03-23
    • 1970-01-01
    • 2016-10-01
    • 2016-11-20
    相关资源
    最近更新 更多