我在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);
}
当usercontrol的layout_updated事件触发时,我执行循环以根据控件的高度重新创建行数(在清除gVertNums网格中的所有内容之后)。我将文本块添加到网格行中,其中包含数字(为简单起见,请保留该代码)。
当主窗口首次打开时,这很有效。但是,当layout_updated事件再次触发时,gVertNums会显示正确的行数,但它们会被压扁。
看起来网格高度正在发生,导致行被压扁。即使我将gVertNums.height重置为新布局的高度,行也会被刷过......
以下是主窗口打开的屏幕截图:
以下是用户控件调整大小时的屏幕截图:
在此示例中,网格宽度已更改但高度未更改且行仍然被挤压在一起。间距是“大小”(25像素)。
为什么会发生这种情况?
答案 0 :(得分:0)
您目前没有(已显示)正在清除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);
}