我在xaml中有一个网格:
我动态地创建了许多行:
for (int i = 1; i <= numHorizLines - 1; i++)
{
RowDefinition r = new RowDefinition();
r.Height = new GridLength(Convert.ToDouble(size), GridUnitType.Star);
gVertNums.RowDefinitions.Add(r);
}当用户控件的layout_updated事件触发时,我执行循环来根据控件的高度重新创建行数(在清除gVertNums网格中的所有内容之后)。我将文本块添加到带有数字的网格行中(为了简单起见,不要使用这些代码)。
当主窗口第一次打开时,这很好地工作。但是,当layout_updated事件再次触发时,gVertNums会显示正确的行数,但它们会被压缩。
网格高度似乎正在发生某种变化,从而导致行被压缩。尽管我将gVertNums.height重置为新布局的高度,但行被擦掉.
下面是打开的主窗口的屏幕截图:

下面是用户控件调整大小时的屏幕截图:

在本例中,网格宽度被更改,但高度没有更改,行仍然压缩在一起。间距为“大小”( 25像素)。
知道为什么会这样吗?
发布于 2014-12-09 16:17:55
您目前没有清除RowDefinitions的代码(如图所示)。因此,在再次添加它们之后,您现在的行数可能是预期的两倍。
尝尝这个
gVertNums.RowDefinitions.Clear();
for (int i = 1; i <= numHorizLines - 1; i++)
{
RowDefinition r = new RowDefinition();
r.Height = new GridLength(Convert.ToDouble(size), GridUnitType.Star);
gVertNums.RowDefinitions.Add(r);
}https://stackoverflow.com/questions/27382423
复制相似问题