1

我有稍微相同的问题,就像之前在这里问过的一样: 如何在 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>
4

1 回答 1

0

我只是绑定AnchorablesSourceDocumentsSource我在我的应用程序中这样做了

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellView.xaml

然后启动应用程序并按照用户第一次启动程序时想要的方式组织面板。使用 将状态保存到磁盘XmlLayoutSerializer,将 XML 作为资源嵌入到您的程序中。当您加载布局时,要么使用光盘上的布局(如果存在),要么使用嵌入在程序中的布局。

于 2013-10-17T12:09:04.240 回答