【问题标题】:Passing state between pages?在页面之间传递状态?
【发布时间】:2011-04-10 01:13:31
【问题描述】:

我有一个包含两个页面的 Silverlight Windows Phone 7 应用程序。我想在它们之间传递一些重要的状态(数组或结构)。我是否必须遵循需要将所有内容打包到查询字符串中的 Web 模型?当所有页面和类都在同一设备上,在同一进程和程序集中时,这毫无意义。

所以问题是:
- 在页面之间导航时,是否有按原样传递数据的好方法?
- 在页面导航时,源页面的代码隐藏是否可以访问目标页面的代码隐藏(反之亦然)?
- 是否存在所有页面都可以引用的共享用户对象(如 ASP 会话)?

或者,有没有办法嵌套 XAML?我可以使用一个模型,其中有一个外部容器页面,可以将不同的内容页面加载到它的面板中。

【问题讨论】:

    标签: silverlight windows-phone-7 navigation


    【解决方案1】:

    你有几个选择:

    1. 按照您的建议使用查询字符串。从 Web 开发的角​​度来看,这是有道理的,但我们不是从 Web 开发的角​​度来看。
    2. 使用静态变量。这可能是最简单的。只需声明另一个具有静态属性的类,您就可以通过这种方式共享数据。这种方法的唯一问题是线程安全。
    3. 使用隔离存储。

    【讨论】:

    • 我想我会选择选项 2...但这太不雅了。为什么我们必须在一个完全非分布式的平台上忍受受 Web 启发的设计约束?毛。
    • 如果你愿意,你可以通过使用 IoC 容器并将其解析为 Singleton 来掩盖丑陋。这样你就有了一个依赖,你可以在需要时伪装出来。
    【解决方案2】:

    不,您不必在查询字符串中传递所有内容。只需传递一个 id 并将数据不平凡的数据存储在页面之间的隔离存储中。

    有一系列关于如何做到这一点的文章here

    【讨论】:

    • 但这是持久的,不是吗?我在想——在记忆中。
    • 是的。有一个内存存储,我不记得它的名字了,但是通过将它存储在 isostore 中,你可以掩护自己进行墓碑 - 当应用程序在按下开始按钮或来电时从内存中取出.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多