相关的堆栈面板尺寸

我有一个递归定义的用户控件,需要以下属性:

有两列

第一个包含一些文本周围的单个边框

第二列包含这些相同类型的控件的堆栈(递归部分)

如果第一列中的框比第二列中堆积框的总高度短,则框应该展开以使两列的高度相同。

如果第二列的总高度小于第一列中的框,则第二列堆栈中的最后一项应该展开,因此它们的高度相同。

例如,它可能看起来像这样:

替代文字

好吧,到目前为止,我所做的是创建一个水平堆栈面板,其中第一个项目是包含边框和文本的停靠面板…第二列是绑定到子列表的垂直堆栈面板,创建递归用户控件。 .. 像这样..

           

要求如下所示:

       

现在,如果堆叠的柱子更高,这可以很好地工作,但如果第一列更高,则它不起作用,并且我得到间隙。 知道如何处理这种相互高度依赖吗?


更新:因此,通过在右列堆栈面板周围添加边框,我能够看到堆栈面板实际上确实收到了最小高度更改。 但是,即使有扩展空间,堆栈面板的子节点也不会自动更新。 如果我事先将堆栈面板的最小高度固定到大的东西,孩子们就会填满。 我需要弄清楚的是如何根据堆栈面板最小高度的变化来更新孩子的身高。

我认为这种布局中的Grid符合您的描述。 我将它放在DockPanel以便您可以看到它如何resize。 尝试在文本框中键入内容并观察其行为:

                     

Grid所有三行都至少具有TextBox的高度(当您将TextBoxes替换为其他元素时,您需要设置最小高度以防止它们在它们为空时消失)。 由于第三行是星号,因此它将自身调整为排列前两行后剩余的所有剩余垂直空间。 因此,如果第一列中有大量内容,则第二列中的第三行会变得更高。

编辑

实际上,在这种情况下,没有理由甚至使用Grid :你所描述的实际上是DockPanel的行为: