如何在更改rowspan后调整网格的子元素大小?

时间:2015-08-13 12:28:42

标签: c# wpf

我有一个标准的WPF网格,其中一些单元格中包含一些Border元素(后者又包含一些内容。

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

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

我已经确认跨度实际上已设置,但问题是Border元素保持相同的大小并移动到跨度的垂直中心。例如。当跨度为2时,它漂浮在两行之间。如何触发元素的大小调整?我试图调用InvalidateArrange(),InvalidateMeasure()以及InvalidateVisual(),但这些都没有影响任何更改。

2 个答案:

答案 0 :(得分:0)

您需要将VerticalAlignment元素的属性Border设置为VerticalAlignment.Stretch,以便它延伸到Grid的可用空间内。

答案 1 :(得分:0)

没关系,我弄清楚了我的错误 - 货物崇拜节目。我正在使用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;

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