我有稍微相同的问题,就像之前在这里问过的一样: 如何在 LayoutAnchorable AvalonDock 2 中放置窗口实例
在这种情况下,我使用的是 AvalonDock 2.0、Caliburn.Micro 和 Mahapps.Metro。
看来我实际上可以将我的视图模型映射到“LayoutAnchorable”,但是当我单击它时,它不会向我显示该控件的内容(它是 MetroContentControl)。我该怎么说...它看起来像是一个不可见的 ContentControl 正在显示。
XAML 代码
<ad:LayoutRoot.BottomSide>
<ad:LayoutAnchorSide>
<ad:LayoutAnchorGroup>
<ad:LayoutAnchorable Title="Test" ContentId="123">
<DataTemplate>
<Controls:MetroContentControl cal:View.Model="{Binding ActiveLogViewModel}" />
</DataTemplate>
</ad:LayoutAnchorable>
</ad:LayoutAnchorGroup>
</ad:LayoutAnchorSide>
</ad:LayoutRoot.BottomSide>
AD 2.0 在使用和放置控件方面是否有限制?这样做的最佳做法是什么?
更新
<ad:DockingManager x:Name="adManagerTop" DocumentsSource="{Binding DocumentSources}" Margin="0,0,0,40">
<ad:DockingManager.Theme>
<ad:MetroTheme />
</ad:DockingManager.Theme>
<ad:DockingManager.LayoutItemContainerStyle>
<Style TargetType="{x:Type ad:LayoutItem}">
<Setter Property="Title" Value="{Binding Model.Title}"/>
<Setter Property="CanClose" Value="{Binding Model.CanClose}"/>
<Setter Property="CanFloat" Value="{Binding Model.CanFloat}" />
</Style>
</ad:DockingManager.LayoutItemContainerStyle>
<ad:DockingManager.LayoutItemTemplate>
<DataTemplate>
<Controls:MetroContentControl cal:View.Model="{Binding Content}" />
</DataTemplate>
</ad:DockingManager.LayoutItemTemplate>
<ad:LayoutRoot>
<ad:LayoutPanel>
<ad:LayoutDocumentPane />
</ad:LayoutPanel>
</ad:LayoutRoot>
</ad:DockingManager>