为什么 AvalonDock 窗格在拆分器第一次移动时会在高度上塌陷?

Why do AvalonDock panes collapse in height when splitters first moved?

C#、WPF、AvalonDock v 4.0.0.0。我在 LayoutPanel 中垂直排列了三个 AnchorablePanes。当用户首次调整任一分离器时,所有三个 AnchorablePanes 的高度或垂直位置都会突然改变。据我所知,这是怎么回事:

移动拆分器时,最远的 AnchorablePane(即应该不受移动影响的拆分器)会折叠到其最小高度。其余两个调整以填充 space,并保持相对于彼此的正确高度比。即

如果移动顶部分离器,AnchorablePane 3 折叠,AnchorablePanes 1 和 2 展开以填充 space。

如果移动底部分离器,AnchorablePane 1 会折叠,AnchorablePanes 2 和 3 会展开以填充 space。

AnchorablePanes 不要只是折叠以适应内容。在我的真实应用程序中,它们确实有内容,但会被遮盖。

一旦发生这种情况,此后的行为是正常的。好像初始显示与底层参数不匹配,所以第一次重新计算时有一个修正。

我们知道造成这种情况的原因或如何预防吗?以下最小示例进行了演示。只需 运行 这个并移动其中一个分离器。

 <Window x:Class="TestAvalon.MainWindow"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:dock="http://schemas.xceed.com/wpf/xaml/avalondock"
          Title="MainWindow" Height="450" Width="800">
      <Grid>
          <dock:DockingManager x:Name = "Dockman">
              <dock:LayoutRoot x:Name = "_layoutRoot" >
                  <dock:LayoutPanel Orientation="Vertical">
                      <dock:LayoutAnchorablePaneGroup Orientation="Vertical">
                          <dock:LayoutAnchorablePane>
                              <dock:LayoutAnchorable Title = "TEST PANE 1">
                              </dock:LayoutAnchorable >
                          </dock:LayoutAnchorablePane >
                          <dock:LayoutAnchorablePane>
                              <dock:LayoutAnchorable Title = "TEST PANE 2">
                              </dock:LayoutAnchorable >
                          </dock:LayoutAnchorablePane >
                          <dock:LayoutAnchorablePane>
                              <dock:LayoutAnchorable Title = "TEST PANE 3">
                              </dock:LayoutAnchorable >
                          </dock:LayoutAnchorablePane >
                      </dock:LayoutAnchorablePaneGroup>
                  </dock:LayoutPanel>
              </dock:LayoutRoot >
          </dock:DockingManager>
      </Grid>
  </Window>

using System.Windows;

namespace TestAvalon
{

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

    }
}

虽然我不知道是什么导致了这种行为,也不知道在使用 Xceed 的 AvalonDock 时如何避免这种情况,但我已经通过使用 Dirkster's AvalonDock fork 解决了这个问题。我使用的是 4.50.2 版,只需要对代码进行少量更改即可在两个库之间切换。 Dirkster 的 AvalonDock 没有出现问题中描述的问题行为。