Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 页面之间的传递状态?_Silverlight_Windows Phone 7_Navigation - Fatal编程技术网

Silverlight 页面之间的传递状态?

Silverlight 页面之间的传递状态?,silverlight,windows-phone-7,navigation,Silverlight,Windows Phone 7,Navigation,我有一个Silverlight Windows Phone 7应用程序,有两个页面。我想在它们之间传递一些非平凡的状态(数组或结构)。我是否必须遵循一个Web模型,其中所有内容都需要打包到查询字符串中?当所有页面和类都在同一个设备上,在同一个进程和程序集中时,这就没有什么意义了 所以问题是: -在页面之间导航时,是否有一种按原样传递数据的好方法? -在页面导航时,源页面的代码隐藏是否可以访问目标页面的代码隐藏(反之亦然)? -是否存在所有页面都可以引用的共享用户对象(如ASP会话) 或者,是否有

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

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


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

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


有一系列文章介绍了如何做到这一点

您有两种选择:

  • 按照建议使用查询字符串。从web开发的角度来看,这是有意义的,但我们不在web开发的角度
  • 使用静态变量。这可能是最简单的。只需声明另一个具有静态属性的类,就可以通过这种方式共享数据。这种方法唯一关心的是线程安全
  • 使用隔离存储

  • 但这是持久的,不是吗?我在想——在记忆中。是的。有一个内存中的商店,我记不起它的名字了,但是通过将它存储在isostore中,你可以覆盖自己的墓碑——当应用程序在按下开始按钮或接到电话时内存不足。我想我会选择选项2。。。但这太不公平了。为什么我们必须在一个完全未分发的平台上接受基于Web的设计约束?如果你想掩饰丑陋,你可以使用一个IoC容器并将其解析为一个单体。这样你就有了依赖,你可以在需要的时候假装出来。