我用这种方式在代码中创建面板:
DockableContent dockableContent = CreateDockableContent<TView>(model);
dockableContent.Show(_dockingManager, AnchorStyle.Bottom);
Run Code Online (Sandbox Code Playgroud)
如何指定该面板的初始高度?以下不起作用:
dockableContent.Height = 400;
Run Code Online (Sandbox Code Playgroud)
要么
ResizingPanel.SetResizeHeight(dockableContent, new GridLength(400));
Run Code Online (Sandbox Code Playgroud) 我在一个项目中使用 AvalonDock。为了这个例子,它的结构如下:
<ad:DockingManager>
<ad:DockablePane>
<ad:DockableContent Title="Test1">
</ad:DockableContent>
<ad:DockableContent Title="Test2">
</ad:DockableContent>
</ad:DockablePane>
</ad:DockingManager>
Run Code Online (Sandbox Code Playgroud)

这很好,但不幸的是,标签在高对比度主题上看起来不太好,如下所示。

理想情况下,我想重新设置选项卡的样式以使用系统颜色作为背景(例如窗口颜色)。这可能吗?
谢谢,艾伦
我试图绑定Visibility的LayoutAnchorableItem在视图模型一个布尔值,这样我可以以编程方式显示和隐藏锚定:
<UserControl.Resources>
<avalon:BoolToVisibilityConverter x:Key="btvc"/>
</UserControl.Resources>
<avalon:DockingManager>
<avalon:DockingManager.LayoutItemContainerStyleSelector>
<ws:WorkspaceStyleSelector>
<ws:WorkspaceStyleSelector.AnchorableStyle>
<Style TargetType="{x:Type avalon:LayoutAnchorableItem}">
<!-- ... -->
<Setter Property="Visibility" Value="{Binding Model.IsVisible, Converter={StaticResource btvc}, Mode=TwoWay}"/>
</Style>
</ws:WorkspaceStyleSelector.AnchorableStyle>
</ws:WorkspaceStyleSelector>
</avalon:DockingManager.LayoutItemContainerStyleSelector>
<!-- ... -->
</avalon:DockingManager>
Run Code Online (Sandbox Code Playgroud)
但是,每当我隐藏一个可锚定的时候,就抛出一个异常:
对象引用未设置为实例.
at Xceed.Wpf.AvalonDock.Layout.LayoutContent.Close() in ...\Xceed.Wpf.AvalonDock\Layout\LayoutContent.cs:line 346
at Xceed.Wpf.AvalonDock.Controls.LayoutItem.OnVisibilityChanged() in ...\Xceed.Wpf.AvalonDock\Controls\LayoutItem.cs:line 310
at Xceed.Wpf.AvalonDock.Controls.LayoutAnchorableItem.OnVisibilityChanged() in ...\Xceed.Wpf.AvalonDock\Controls\LayoutAnchorableItem.cs:line 299
at Xceed.Wpf.AvalonDock.Controls.LayoutItem.OnVisibilityChanged(DependencyObject s, DependencyPropertyChangedEventArgs e) in ...\Xceed.Wpf.AvalonDock\Controls\LayoutItem.cs:line 303
at Xceed.Wpf.AvalonDock.Controls.LayoutItem.<.cctor>b__1(DependencyObject s, DependencyPropertyChangedEventArgs e) in ...\Xceed.Wpf.AvalonDock\Controls\LayoutItem.cs:line 37
at System.Windows.PropertyChangedCallback.Invoke(DependencyObject d, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
...
Run Code Online (Sandbox Code Playgroud)
在注释掉对可见性的绑定之后,可以按预期隐藏可锚定.
我正在使用AvalonDock控件来完成可绑定和可停靠的窗格.

我找到了很好的样本,让我这样做.需要做的一些事情:我使用了经理:
<xcad:DockingManager Name="DockingManager" AnchorablesSource="{Binding FooterTools}" DocumentsSource="{Binding MainWindowTools}">
Run Code Online (Sandbox Code Playgroud)
一切看起来都很棒,使我能够使用MVVM模式准备该解决方案.
我想知道如何扩展该解决方案以完成以下草案:

我有两个来源,我可以用作可绑定的来源:
AnchorablesSource="{Binding FooterTools}" DocumentsSource="{Binding MainWindowTools}"
Run Code Online (Sandbox Code Playgroud)
如果有人指出我的方向或者如何在页脚中创建一个可绑定窗格而在右侧创建另一个可绑定窗格,我会很高兴.
是否可以使用AvalonDock
我正在使用avalon dock v2,我想要做的就是拥有它所以当我点击一个按钮时它会在我的布局中添加另一个窗格.
这是我现有的窗格,但是当我按下按钮时,我不知道为其添加另一个窗格的语法.
avalonDock:DockingManager x:Name="dockingManager">
<avalonDock:LayoutRoot>
<avalonDock:LayoutPanel Orientation="Horizontal">
<avalonDock:LayoutDocumentPaneGroup >
<avalonDock:LayoutDocumentPane x:Name="mainDocumentPaneGroup">
</avalonDock:LayoutDocumentPane>
</avalonDock:LayoutDocumentPaneGroup>
</avalonDock:LayoutPanel>
</avalonDock:LayoutRoot>
</avalonDock:DockingManager>
Run Code Online (Sandbox Code Playgroud)
这是我放在按钮内部的内容.
DockPanel CNPCTab = new DockPanel() { };
CNPCTab.Name = "CNPCTab";
mainDocumentPaneGroup.
Run Code Online (Sandbox Code Playgroud)
我真的没有看到任何允许我将我初始化的窗格添加到xaml中初始化的组I的方法.