简单代码:
<ItemsControl Grid.IsSharedSizeScope="True" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="firstColumn" Width="Auto"/>
<ColumnDefinition SharedSizeGroup="splitterColumn" Width="Auto"/>
<ColumnDefinition SharedSizeGroup="lastColumn" Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=Key}"/>
<GridSplitter Width="5" Grid.Column="1" />
<TextBlock Text="{Binding Path=Value}" Grid.Column="2"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>lastColumn存在问题,其width不是100%。我试图为所有网格设置HorizontalAlignment="Stretch",但这没有帮助。
lastColumn的宽度必须是100%。如何解决这一问题?
发布于 2014-06-29 13:10:24
您不需要在每一列中都包括SharedSizeGroup。在这种情况下,如果您的第一列和第二列共享一个大小,您应该能够通过省略最后一列上的属性来获得您想要的行为。如果前两列共享大小,则最后一列的空间应该总是相同的:
<Grid Width="300" Height="30" Background="Red">
<Grid Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="firstColumn" Width="Auto"/>
<ColumnDefinition SharedSizeGroup="splitterColumn" Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Text="1" Grid.Column="0"/>
<GridSplitter Width="5" Grid.Column="1"/>
<TextBox Text="Test" Grid.Column="2" />
</Grid>
</Grid>编辑:这本质上就是这里遇到的问题: columns in WPF Grid
进一步编辑:您现在已经更改为ItemsControl,但同样的情况仍然适用。
https://stackoverflow.com/questions/24475800
复制相似问题