在WP7中的程序集之间传递数据/对象

时间:2011-11-08 16:13:27

标签: windows-phone-7

我正在开发的Windows Phone 7项目有两个用户界面,以及一些功能的核心“引擎”,其中一些页面很常见。我希望我的用户界面将对象传递到核心程序集中的这些常用页面之一。

目前,我可以从UI程序集导航到核心程序集中的页面。但是,我的理解是每个组件都有自己的隔离存储,这是正确的吗?

如果我可以共享隔离存储,我可以使用它,我只是不确定如何让两个程序集一起使用它。

最佳做法是什么?

我尝试使用Google搜索:'wp7在程序集之间传递对象

更多信息:
这将是一个带有两个程序集的应用程序。像这样:

CustomerUI(项目)
- MainPage.xaml
- App.xaml

CoreFuncs(项目)
- CustomerData.cs
- EditCustomer.xaml

SalesRepUI(项目)
- MainPage.xaml
- App.xaml

CustomerUI和SalesRepUI都将使用EditCustomer页面和customerData对象。因此,从MainPage实例化CustomerData对象,然后用户可以单击“编辑用户”,这将导航到公共EditCustomer.xaml页面。我们希望传入已经实例化的CustomerData对象。 (为了讨论的目的......)

4 个答案:

答案 0 :(得分:1)

据我所知,每个应用程序有一个独立存储,而不是每个程序集。因此,如果您愿意,可以尝试将对象传递给它。

答案 1 :(得分:1)

这取决于这两个独立的应用程序还是两个程序集?

隔离存储在正在运行的应用程序周围隔离。这意味着每个应用程序都有自己的存储空间,无法从其他应用程序访问。在两个应用之间共享数据的唯一方法是:

  1. 7.5中的WebService /或TCP服务:您将从一个应用程序上传数据并将数据下载到单独的应用程序中。

  2. 用户执行的任务:复制和粘贴/发送电子邮件

  3. 但是,如果这只是一个应用程序,您只需通过读取和写入文件就可以访问程序集之间的隔离存储。唯一需要注意的是文件锁定,请确保在尝试从单独的dll /程序集中读取文件之前关闭文件。

答案 2 :(得分:1)

抱歉,抱歉,我发现了我想要的东西,我的想法太难了。 PhoneApplicationService.Current.State["keyName"] = object;正是我想要的。不确定它是否是最好的方式,但对我来说,它是有效的。只需抛出我的设置类或其中的任何内容,并在page.xaml代码的另一端捕获它。

答案 3 :(得分:0)

我建议在MVVM Light工具包中使用Messenger类: http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx

两个程序集都可以引用单个共享程序集;该程序集可以包含用于保存通过信使传递的数据的类型。