【发布时间】:2013-01-10 21:06:21
【问题描述】:
是否有任何关于将 AvalonDock 与 Caliburn Micro MVVM 结合使用的博客或文章? 谷歌搜索时没有找到太多
http://avalondock.codeplex.com/
编辑:获得了赞成票,所以为什么不更新最终解决方案。 完整代码可以在这里找到
https://github.com/AndersMalmgren/FreePIE
大部分avalon相关代码都可以在这里找到
https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellView.xaml
山姆回答后更新
启用 Caliburn 需要做的事情非常非常少。首先实现一个LayoutItemTemplateSelector
public class AutobinderTemplateSelector : DataTemplateSelector
{
public DataTemplate Template { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
return Template;
}
}
并将其与内容控件和 Caliburns 的 View.Model 附加机制一起使用
<xcad:DockingManager.LayoutItemTemplateSelector>
<avalonDock1:AutobinderTemplateSelector>
<avalonDock1:AutobinderTemplateSelector.Template>
<DataTemplate>
<ContentControl cal:View.Model="{Binding . }" IsTabStop="False" />
</DataTemplate>
</avalonDock1:AutobinderTemplateSelector.Template>
</avalonDock1:AutobinderTemplateSelector>
</xcad:DockingManager.LayoutItemTemplateSelector>
【问题讨论】:
-
我知道这已经很老了,但我又回到了同一个地方进行一个新项目。我试图理解 FreePIE 代码库的这一部分,但是当我尝试复制这种方法时,我得到“找不到 System.Windows.Controls.ContentPresenter 的视图”而不是预期的视图。使用 Caliburn 时,您是否有明显的原因可能会得到该视图而不是视图?
-
这是我的问题 - stackoverflow.com/a/32723365/571237。感谢您发布最终解决方案!
标签: mvvm caliburn.micro avalondock