Windows Phone 8 等值为 Android 的 StartActivityForResult 的

发布时间: 2014/3/3 20:03:36
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我是从 Android 的背景,我进展到 Windows Phone 8。

我有一个页面了使用相机进行解码 QR 码和这工作正常。在 Android 中会使用意图此活动 StartActivityForResult ,其中会然后还给我解码的值到原始活动。

中搜索的结果,但找不到明显的相当于在 Windows Phone 8。目前我想到的是要导航到调用页与包含解码的值的查询字符串并改变 back 堆栈中,但这看起来有点乱。

问题

在 android 中,过程的等效和有如果是可以有人概述方法所以我可能会看到它在行动吗?

解决方法 1:

第一,没有这种东西在 WP8,所以你需要一种解决方法。变通办法可能是不同的和相连的问题 (和答案) 是一种潜在的办法。我亲自做这略有不同。虽然不可能适用于您的情况,因为我的应用程序是相当大,并且具有复杂的结构,我将介绍在这里,我当前项目的体系结构。但我会试着解释它如何能适用于您的具体情况。

特别是,我当前的应用程序由组成,所以称为服务 (只是我的名字,不标准之一)。那些具有不同的范围 (一些使用的第 1 页,有些是全球应用程序),不同的生存期,依此类推。本质上,每一项服务是实现定义良好的接口,类以便其他服务能使用的。

下一步,服务可能依赖于对方。我使用 Ninject 框架的依赖注入。从根本上讲,如果服务 A 依赖于 B 的服务,它所导致的像这样的代码:

public class B : IB
{
...
}
public class A
{
    IB b;
    public A(IB b)
    {
        this.b = b;
    }
}

IB 在哪里哪个服务 B 实现的接口。

然后我有视图模型 (是的我使用 MVVM 和你大概也应该这样,如果你想要建立一个合理地大 WP8 应用程序)。查看模型将使用服务来执行应用程序的功能。由几个视图模型使用的一些服务。例如,我从网上获取一些数据的一个服务,保持其最新定期轮询。Web 数据使用多个页面的应用程序,所以它应该不同的视图模型之间共享。它被通过依赖关系注入再次,这样,所有感兴趣的视图模型接受此服务实例作为构造函数的参数。

public class MainPageViewModel : INotifyPropertChanged
{
    private string webData;
    public MainPageViewModel(IWebDataService service)
    {
        webData = service.CurrentWebData;
        service.WebDataChanged += (o, e) => webData = service.CurrentWebData;
    }
    ...
}

public class DetailPageViewModel : INotifyPropertChanged
{
    private string webData;
    public DetailPageViewModel(IWebDataService service)
    {
        webData = service.CurrentWebData;
        service.WebDataChanged += (o, e) => webData = service.CurrentWebData;
    }
    ...
}

public class WebDataService : IWebDataService
{
    public string CurrentWebData;
    public event EventHandler WebDataUpdated;
    ...
}

Ninject 允许我有单个实例的 IWebDataService 进行实例化,所以这主要和细节页共享它的同一实例。当更新 web 数据时,被激发的事件,这样,这两个视图模型可以更新他们的 web 数据的实例并将此新数据推送到意见。

所以这里是怎么做到的。您可能能够重用这种体系结构,像有一些类,可单一实例的不同页面的某些部分。一页将一些新的数据放到那单一实例的实例,以及当数据是更新 (事件被解雇或在施工期间,如果垃圾回收器有足够的时间对杀现有页和/或视图的模型实例),另一页读取更新的数据。这就是他们的分享。

如果你想让我深入查看详细信息关于一些话题,请随时在评论中问。Android 开发者更多欢迎到 Windows Phone。:)

赞助商