【问题标题】:Pass data/object between assemblies in WP7在 WP7 中的程序集之间传递数据/对象
【发布时间】:2011-11-30 01:44:22
【问题描述】:

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

目前我可以从 UI 程序集导航到核心程序集中的页面。但是,据我了解,每个程序集都有自己的独立存储,对吗?

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

最佳做法是什么?

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

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

CustomerUI(项目)
- MainPage.xaml
- 应用程序.xaml

CoreFuncs(项目)
- 客户数据.cs
- EditCustomer.xaml

SalesRepUI(项目)
- MainPage.xaml
- 应用程序.xaml

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

【问题讨论】:

  • 对不起,对不起,我找到了我想要的,我想太多了。 PhoneApplicationService.Current.State["keyName"] = object; 正是我想要的。不确定它是否是最好的方法,但对我来说,它有效。只需将我的设置类或其他任何内容放入其中,然后在 page.xaml 代码的另一侧捕获它。

标签: windows-phone-7


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 嗯...好吧,那太好了。但是,我使用 App.xaml.cs 类进行隔离存储,我得到像这样的值return (Application.Current as UIAppName.App).ValueName;。 UIAppName 会引用 CoreClasses 的异议,但是 CoreClasses 可以从 UIAppName 获取 App 数据吗?
    • 那么,怎么样,我在 UIApp 中有 MainPage.xaml,它可以从 App.xaml 中读取值。然后,用户将导航到 CoreFuncs 程序集中的 CommonPage.xaml。当 MainPage.xaml 加载时,我想将设置读入 CommonPage.xaml 可以访问它们的区域。我正在考虑向 CoreFuncs 添加一个设置类,类似于 CoreFuncs.appSettings,CommonPage 可以写入。我在正确的轨道上吗?
    • 如果创建自己的设置类并将其序列化/反序列化到隔离存储。序列化链接:support.microsoft.com/kb/815813 隔离存储链接:windowsphonegeek.com/tips/… 您可以在每个程序集中复制此类...或者您可以创建一个由两个程序集引用的类库
    【解决方案3】:

    对不起,对不起,我找到了我想要的,我想太多了。 PhoneApplicationService.Current.State["keyName"] = object; 正是我想要的。不确定它是否是最好的方法,但对我来说,它有效。只需将我的设置类或其他任何东西扔进去,然后在 page.xaml 代码的另一端捕获它。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 2011-04-24
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 2018-11-11
        • 1970-01-01
        相关资源
        最近更新 更多