Хорошо, используйте ItemsControl с примененным свойством Grid.IsSharedSizeScope="true"
. Далее, для вашего ItemTemplate вы используете <Grid>
, как обычно, но теперь, когда вы добавляете ColumnDefinition
s, вы устанавливаете атрибут SharedSizeGroup
для имени, уникального для каждого столбца. Так, например:
<ItemsControl Grid.IsSharedSizeScope="true">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="MyFirstColumn" />
<ColumnDefinition SharedSizeGroup="MySecondColumn" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding MyFirstProperty}"/ >
<TextBlock Grid.Column="1" Text="{Binding MySecondProperty}"/ >
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Для получения дополнительной информации о IsSharedSizeScope и SharedSizeGroup, ознакомьтесь с этим разделом SDK . Следует отметить, что у RowDefinitions также есть SharedSizeGroup, так что вы также можете создавать горизонтальные макеты.