我有一个标准的WPF网格,其中一些单元格中包含一些Border元素(后者又包含一些内容。
我需要在运行时调整其中的一些,所以我在程序上设置所述元素的RowSpan,如下所示:
int span = Grid.GetRowSpan(cell);
Grid.SetRowSpan(cell, ++span);
我已经确认跨度实际上已设置,但问题是Border元素保持相同的大小并移动到跨度的垂直中心。例如。当跨度为2时,它漂浮在两行之间。如何触发元素的大小调整?我试图调用InvalidateArrange(),InvalidateMeasure()以及InvalidateVisual(),但这些都没有影响任何更改。
答案 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;
设置宽度和高度以允许显式调整大小。我误解了这实际上会阻止父母调整元素的大小。