我使用 AvalonDock 具有类似 vs 的停靠风格,并使用 prism 在我的应用程序中注入视图。
基本上,用户将在侧面有一个面板,每个视图可加载一个按钮,每次他按下一个按钮时,我想在我的 AvalonDock 的 DocumentPane 上创建一个新选项卡,并在其中注入正确的视图。
现在我的印象是棱镜适合这种情况,但我无法弄清楚。
此外,我偶然发现了 Markus Raufer 的 DocumentPane 和 DockablePane 区域适配器,已将其添加到我的项目中并在引导程序中注册了映射。
这使我可以编译解决方案(所以我猜我已经接近了)。
到目前为止,我这样做:
在我的Shell
我有一个地方:
<avadock:DocumentPane avadock:ResizingPanel.ResizeWidth="500" Background="Transparent"
prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}">
</avadock:DocumentPane>
在我的代码隐藏中,在引导等之后,我有一个地方可以:
m_RegionManager.Regions[RegionNames.MainTabControlRegion].Add(oneOfMyUserControls);
执行此行不会向用户显示更多内容,但如果我执行两次,它会出错,说明视图已经注册(所以它确实添加了一些东西!)。
此外,当我放置一个常规的 ContentControl 时,标记它prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}
然后在其中添加一个 UserControl,就像我将它添加到 AvalonDock 的 DocumentPane 一样,它可以工作。怪异的
我究竟做错了什么?
谢谢,
粑粑
编辑:
如果像这样定义 MainTabControlRegion,实际上添加了第一个视图,现在我添加了另一个视图(不同的 UserControl)它没有显示它,但是 WPF Inspector 说它在那里。
从我的角度来看,它确实将 UserControls 添加到一个区域,但它不知道如何为我添加到 DocumentPane 的每个 UserControl 创建一个新选项卡。
由于我没有具体说明,我可能遗漏了一段代码?
<avadock:DocumentPane avadock:ResizingPanel.ResizeWidth="500" Background="Transparent">
<avadock:DocumentContent Title="" prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}">
</avadock:DocumentContent>
</avadock:DocumentPane>
每次我添加用户控件并将其插入其中时,我都希望它创建一个新选项卡。
编辑2:解决方案->在这里