如何在更改行跨度后调整网格的子元素的大小

本文关键字:网格 调整 元素 | 更新日期: 2023-09-27 18:07:50

我有一个标准的WPF网格,在一些单元格中有一些边框元素(这些单元格又包含一些内容)。

我需要在运行时调整其中一些元素的大小,所以我正在程序地设置所述元素的RowSpan,如下所示:

int span = Grid.GetRowSpan(cell);
Grid.SetRowSpan(cell, ++span);

我已经验证了span实际上正在被设置,但问题是Border元素保持相同的大小并移动到span的垂直中心。例如,当span为2时,它会在两行之间浮动。如何触发元素的大小调整?我已经尝试调用InvalidateArrange(), invalidatemmeasure(),以及InvalidateVisual(),但这些都没有影响任何变化。

如何在更改行跨度后调整网格的子元素的大小

您需要将您的Border元素上的属性VerticalAlignment设置为VerticalAlignment.Stretch,以便它扩展到您的Grid的可用空间

没关系,我发现我的错误了-货物崇拜程序。我使用一个Adorner来允许用户调整单元格内容的大小,并且模糊地遵循MSDN的示例,并且我的Adorner在初始化期间包含以下内容:

        if (_cell.Width.Equals(Double.NaN))
            _cell.Width = _cell.RenderSize.Width;
        if (_cell.Height.Equals(Double.NaN))
            _cell.Height = _cell.RenderSize.Height;

设置宽度和高度以允许显式调整大小。我误解了这实际上会阻止父元素调整元素的大小。