MVVM导航怎么样

时间:2013-07-02 11:33:03

标签: wpf caliburn.micro

我不希望得到任何答案,但我会尽力明白。

我尝试了 Caliburn Micro 。起初它似乎很好,我需要的一切。一些功能是,但其他没有。

我想要的只是一个窗口,其中一些视图作为usercontrols,每个视图都有多个对话框。使用 conductor.OneActive 我可以轻松实现第一个。然而,即使查看示例,在视图之间切换也是将Parent转换为Conductor并在那里调用方法 甚至校准微型的例子都像这样铸造。在屏幕上调用.close(false)与close(true)相同,导致查看视图并重新创建导致最低端原子pc的滞后。 因此,只有解决方案才能转变为父母。

对话框
我试过大量的对话例子,但没有工作,让我的生活变得艰难。 Messagebox等很简单,但如果你想要多个对话框你就不走运了。 如果你把代码放在close回调中打开另一个对话框,你会得到额外的stackoverflow异常,因为它会混淆。(无限循环)。 我可以想出一个很好的对话框,可以缓存视图,同时有效地显示多个对话框。

事件聚合器 此外,我无法弄清楚地球上的事件聚合器如何适合切换视图。如果你有多个导体,它可能是一个地狱管理。

3 个答案:

答案 0 :(得分:0)

要显示对话框 - 如在模式对话框中阻止显示它的视图 - 您应该使用IWindowManager.ShowDialog

答案 1 :(得分:0)

你应该看一下棱镜库http://compositewpf.codeplex.com/

请参阅导航章节:http://msdn.microsoft.com/en-us/library/gg430861%28v=pandp.40%29.aspx

但我不知道EventAggregator如何帮助你切换视图......你可以订阅在closingView上收到一个事件但是......

答案 2 :(得分:0)

您可能需要查看Catel。它有UIVisualizerService,允许您根据视图模型显示窗口。

它还有ViewManager (IViewManager),可让您管理整个应用程序中的所有视图。除此之外,它还提供了一个ViewModelManager(IViewModelManager),它为您的视图模型执行相同的操作。最重要的是:您可以在应用程序中找到与特定视图模型相关联的所有视图,以便与之交互。