9

有没有人成功地使用来自 Prism 模块和 AvalonDock 的动态注入视图成功加载和保存布局?

我有一个用于 AvalonDock DockingManager 的 RegionAdapter,它允许我使用我的 Prism 模块中的 RegionViewRegistry 注册视图,并且它们被 AvalonDock 中的 LayoutAnchorable 对象包装。

这一切都很好,除了保存和加载布局时。当我从我的模块中添加一个视图时,它会通过 RegionAdapter 并正确序列化(我有一个后序列化步骤,它将一些自定义 XML 添加到输出中,以提供有关在哪个 LayoutAnchorable 中显示的模块的一些信息)。

当我加载布局时,我实现了 LayoutSerializationCallback,将内容设置为适当的模块视图并正确显示。

问题是如果我随后尝试序列化它,我永远不会得到反序列化中添加的 LayoutAnchorables。

我很想听听任何成功创建 AvalonDock + Prism + 布局保存和加载的人的意见。

我对 Infragistics 和 SyncFusion 的 DockManagers 都进行了评估,但成功率更低,它们都没有提供反序列化回调以允许我注入自定义视图。

4

1 回答 1

2

大约一年前我尝试过这个并放弃了,因为基于 MVVM 的带有 AvalonDock 的示例应用程序对我来说工作得很好。我了解区域适配器解决了什么问题,但这对我的应用程序来说不是必需的。

我在没有区域适配器的个人项目Wide中使用 PRISM(用于服务和模块化)+ AvalonDock(对接)+ 布局保存。 还有一些其他项目 - SharpDevelopGemini虽然使用 AvalonDock + 加载/保存而不使用 PRISM。#D 构建自己的模块化框架,Gemini 使用 Caliburn.Micro 框架。

总的来说,我建议你看看上面提到的开源项目,看看你是否能从中找到有用的东西。希望这可以帮助!

于 2013-09-19T02:37:43.837 回答