棱镜:贝壳之间的导航?

Posted

技术标签:

【中文标题】棱镜:贝壳之间的导航?【英文标题】:Prism: Navigation between Shells? 【发布时间】:2012-10-15 18:45:53 【问题描述】:

我想使用 Silverlight 和 Prism 创建一个应用程序,用户可以像这样导航:

红色矩形表示内部具有不同 Prism 模块的区域(本例中为 6 个不同的模块)。

解决以下问题的最佳方法是什么:

AFAIK 外壳中的区域不会改变,但我无法通过使用相同的区域创建我想要的不同布局(例如,一旦模块水平堆叠和垂直堆叠一次)。这里有多个 shell 会是一个不错的选择吗?

我知道区域导航管道可用于在区域中的视图之间切换。这也可以用来在不同的Shell之间切换吗?

在 shell 之间导航感觉不对,但我还能如何解决这个问题?

这似乎是一种常见的情况,但我找不到有关它的信息。大多数应用程序,甚至是复杂的应用程序(即http://blogs.msdn.com/b/erwinvandervalk/archive/2009/03/02/how-to-build-an-outlook-style-application.aspx、http://www.codeproject.com/Articles/165370/Creating-View-Switching-Applications-with-Prism-4、StockTrader RI)只使用一个布局永远不会改变的 shell,但如果布局必须改变怎么办?

【问题讨论】:

请看这个链接***.com/questions/5276984/… 【参考方案1】:

免责声明:我是 WPF Prism 程序员,所以我的回答可能不适用于 Silverlight。

我不会选择多壳路线。相反,我会在区域内有区域。

注意:尽管如此,在您进行设计之前,您需要询问您是否可以使您的内容既可以水平也可以垂直(即绑定到 Orientation 并使用 WrapPanels)。如果可以,那么您可以重用您的实际内容区域。

您可以设计一个外壳,其中包含多个区域,这些区域的可见性由您的应用控制。

例如:成功登录后,登录区域被隐藏,而 StyleSelector 区域显示(带有 A 和 B 按钮)。

按下其中之一后,StyleSelector 区域被隐藏,您将显示 VerticalContentPresenter 区域或 Horizo​​ntalContentPresenter 区域。

每个 xxxxxxxContentPresenter 区域内部都有两个区域。

正如我上面所说,根据您的控件如何,您可以在 xxxxxxContentPresenter 区域内重复使用相同的区域(甚至可以使这些区域也是相同的区域)。

【讨论】:

我在棱镜上搜索了很多隐藏区域,但找不到。如果您有示例代码,请将其放在此答案中,这将是一个很大的帮助

以上是关于棱镜:贝壳之间的导航?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MVVM 模式中从页面导航到 WPF 中的页面?没有棱镜的概念[重复]

如何在具有棱镜的Xamarin表单中为contentview创建单独的视图模型?

Xamarin Master Detail prism 导航栏后退按钮

反应导航中 Stack 和 Switch Navigator 之间的嵌套导航器之间的导航

响应式导航 - 更改经典导航和下拉导航之间切换的限制

使用反应导航延迟屏幕之间的导航