嘿,我和雪场有点小问题。
我试图改变我的观点,基本上是一个有两列的网格(一个相当大的部分在左边,一个相当小的部分在右边有两个小窗口)。我希望左边的一个作为我的窗口的“背景”,右边的两个小窗口应该可以停靠在任何用户想停靠它们的地方。这是我尝试过的:
<DockPanel>
<Grid>
<avalonDock:DockingManager Name="dockManager">
<avalonDock:LayoutRoot>
<avalonDock:LayoutRoot.LeftSide>
<avalonDock:LayoutAnchorSide>
<avalonDock:LayoutAnchorGroup>
<avalonDock:LayoutAnchorable Title="Editor"
ContentId="Editor"
CanClose="False"
CanHide="False"
CanAutoHide="False"
CanFloat="False"
AutoHideMinWidth="200">
<ContentControl>
<GroupBox Grid.RowSpan="3"
Grid.Column="0"
Header="Editor"
Visibility="{Binding IsFileOpen}">
<ContentControl Content="{Binding EditorViewModel}" />
</GroupBox>
</ContentControl>
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorGroup>
</avalonDock:LayoutAnchorSide>
</avalonDock:LayoutRoot.LeftSide>
<avalonDock:LayoutPanel>
<avalonDock:LayoutDocumentPane DockWidth="0.8*" />
<avalonDock:LayoutAnchorablePaneGroup Orientation="Vertical"
DockWidth="400">
<avalonDock:LayoutAnchorablePane>
<avalonDock:LayoutAnchorable Title="Tools"
ContentId="Elements"
CanClose="False"
CanHide="False">
<ContentControl Content="{Binding ElementsViewModel}" />
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorablePane>
<avalonDock:LayoutAnchorablePane>
<avalonDock:LayoutAnchorable Title="Properties"
ContentId="Properties"
CanClose="False"
CanHide="False">
<GroupBox Header="Properties">
<GroupBox.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/ET.Usage.Acp.Apps.EventDrivenPetriNet.Editor;component/View/DataTemplates/PropertiesTemplates.xaml" />
<ResourceDictionary Source="pack://application:,,,/ET.Usage.Acp.Apps.EventDrivenPetriNet.Editor;component/View/Styles/MainStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</GroupBox.Resources>
<Border Background="{StaticResource ResourceKey=TabControl_BackgroundBrush_Base}"
BorderBrush="{StaticResource ResourceKey=TabItem_BorderBrush_Selected}"
BorderThickness="1,1,1,1">
<Border Margin="8"
BorderBrush="{StaticResource ResourceKey=TabPage_InnerBorderBrushDark}"
BorderThickness="1"
CornerRadius="3">
<Border Margin="0"
BorderBrush="{StaticResource ResourceKey=TabPage_InnerBorderBrushBright}"
BorderThickness="1"
CornerRadius="2"
Padding="2,2,3,3">
<ContentControl MinHeight="80"
Content="{Binding PropertiesViewModel}"
ContentTemplateSelector="{StaticResource PropertiesTemplateSelector}" />
</Border>
</Border>
</Border>
</GroupBox>
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorablePane>
</avalonDock:LayoutAnchorablePaneGroup>
</avalonDock:LayoutPanel>
</avalonDock:LayoutRoot>
</avalonDock:DockingManager>
</Grid>
</DockPanel>
如您所见,我尝试在左侧添加编辑器视图(LayoutRoot.LeftSide),然后在右侧添加两个可停靠的视图(LayoutPanel)。
停靠窗口按预期工作,但编辑器视图也只是另一个停靠窗口。在运行时,我可以说:停靠为选项卡式文档或类似的东西,但这并不能解决我的问题,因为(即使我可以在设计时这样做)我仍然会得到一个选项卡,这是我不想要的(一个原因是因为ContentControl将再次有多个选项卡)。我只想让编辑器视图作为我的窗口的背景,它不能浮动等等。
提前谢谢你!
发布于 2015-06-05 17:08:12
不幸的是,我不能回答你的具体问题,但对我来说,最好的做法是在DockingManager上实现保存布局和加载布局选项,然后在应用程序启动时简单地加载你想要的选项,这比摆弄代码要容易得多,因为出于某种原因,这似乎不可能告诉你该做什么。
https://stackoverflow.com/questions/26795973
复制相似问题