您应该有一个Grid
标题区域的标准,然后“行”可能是每行ItemsControl
的ItemsTemplate
网格。SharedSizeScope
然后,您可以在网格上使用对齐所有列。
这是我的意思的一个例子
<Grid Grid.IsSharedSizeScope="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid x:Name="header">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="col1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="col2" />
<ColumnDefinition Width="Auto" SharedSizeGroup="col3" />
</Grid.ColumnDefinitions>
<TextBlock FontWeight="Bold" Text="Col1" />
<TextBlock FontWeight="Bold" Text="Col2" Grid.Row="1" />
<TextBlock FontWeight="Bold" Text="Col3" Grid.Row="2" />
</Grid>
<ItemsControl ItemsSource="{Binding Users}" Grid.Row="1" x:Name="rows">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="col1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="col2" />
<ColumnDefinition Width="Auto" SharedSizeGroup="col3" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Col1Data}" />
<TextBlock Text="{Binding Col2Data}" Grid.Row="1" />
<TextBlock Text="{Binding Col3Data}" Grid.Row="2" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
此方案允许您创建一个数据网格,如 UI,具有极易定制的终极水平。