如何使用 WPF GridSplitter 支持元素 expand/collapse 和调整大小?

How to support element expand/collapse and resize with WPF GridSplitter?

在这里写了一个小的 WPF 应用程序,但我无法破解这个问题:

我在 window 的底部有一个面板,用户应该 expand/collapse 单击一个按钮。此外,当展开时,用户应该能够通过拖动 GridSplitter 来调整它的大小。

为了构建它,我在三行网格中布置了控件:

Row[0](Height=*)    = some content (not important for the problem)
Row[1](Height=5)    = GridSplitter (I have also tried setting Row Height to Auto)
Row[2](Height=Auto) = the resizable/expandable/collapsable "panel"

我试过控制"panel"的高度。这允许 expanding/contracting 但是当使用 GridSplitter 调整大小时 "panel" 不会拉伸以调整大小。我已经尝试重置 "panel" Height = double.NaN 并且当用户开始拖动拆分器时它是 VerticalAlignment = VerticalAlignment.Stretch 但这不起作用。

如果我不尝试显式控制 "panel" 高度,它会按预期拉伸,并且可以通过 GridSplitter 调整大小,但这不允许 Expanding/Contracting 单击按钮。

任何关于如何实现这两个功能的提示都会很棒!

如果它是一个触发器——最简单的方法——你可以给 RowDefinition 一个样式,然后将触发器放在样式的 Style.Triggers 部分。