我在后面的代码中将行添加到网格中,但每次最后的某些行都显示在彼此的顶部(重叠;就像它们在同一行中一样)。我知道我设置的行号不一样,每行的高度都是auto。
网格没有固定高度,但位于固定高度的标题页内。我正在使用带有网格的滚动条并且工作正常(当我添加更多项目时它会扩展),但最后总会有一些行重叠。所以它不像网格只接受固定数字或保持固定长度。即使我添加了几行,并且网格只占用屏幕的一半,最后几行将在末尾重叠。
我尝试使用网格似乎没有改变任何东西 - 我尝试将高度设置为自动,到固定高度,它都是一样的。我真的很困惑发生了什么。
任何建议都将非常感谢。我知道DataGrid可能在这里工作得更好但是现在我需要坚持使用这个网格。
这是我的xaml代码:
<TabControl Grid.ColumnSpan="5" Grid.RowSpan="15" Height="640">
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal" Height="23" VerticalAlignment="Center">
<Image Source= "image.png" Margin="0,-3,0,0" VerticalAlignment="Center" Height="17" />
<TextBlock Margin="5,0,0,0" VerticalAlignment="Center">text</TextBlock>
</StackPanel>
</TabItem.Header>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid Name="myGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="350"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="5"/>
<RowDefinition Height="1"/>
<RowDefinition Height="20"/>
<RowDefinition Height="10"/>
</Grid.RowDefinitions>
</Grid>
</ScrollViewer>
</TabItem/
...
在后面的代码中,我以这种方式添加行(对现有的行):
RowDefinition rowNew1 = new RowDefinition();
rowNew1.Height = new GridLength(1, GridUnitType.Auto);
myGrid.RowDefinitions.Add(rowNew1);
TextBlock tb = new TextBlock();
tb.Text = some_string;
myGrid.Children.Add(tb);
tb.Margin = new Thickness(10, 0, 0, 0);
Grid.SetRow(tb, some_number);
答案 0 :(得分:0)
对我来说很好。确保您设置的行号实际上是正确的索引:
Grid.SetRow(tb, myGrid.RowDefinitions.IndexOf(rowNew1));