Я пытаюсь макет пару элементов управления:Sharing ширина колонки между сетками, определенными в шаблоне
Светло-серые вертикальные линии сетки разветвители. Каждая строка в этой таблице представляет собой сетку с тремя столбцами, метку слева, разделитель посередине и элемент управления справа, включая текстовые поля и изображение.
Я хочу, чтобы все столбцы были выровнены. Вот шаблон данных я использую для каждой строки:
<DataTemplate x:Key="PropertyLineTemplate">
<Grid Margin="0,0,0,1">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="Name"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition SharedSizeGroup="Value"/>
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
VerticalAlignment="Center"
Text="{Binding Title}" />
<GridSplitter Grid.Column="1" Width="2"/>
<SomeUserControl
Grid.Column="2"
Content="{Binding}"
Margin="4, 0, 0, 0"/>
</Grid>
</DataTemplate>
и шаблоном для самого представления:
<DataTemplate DataType="{x:Type vm:PropertiesViewModel}">
<DockPanel>
<!-- Properties -->
<ScrollViewer>
<StackPanel Margin="10">
<ItemsControl ItemsSource="{Binding Properties}"
ItemTemplate="{StaticResource PropertyLineTemplate}" />
</StackPanel>
</ScrollViewer>
</DockPanel>
</DataTemplate>
и использования как:
<ContentControl Content="{Binding SelectedItem}" Grid.IsSharedSizeScope="True">
</ContentControl>
где SelectedItem
имеет type PropertiesViewModel
.
Я также попытался разместить Grid.IsSharedSizeScope="True"
в каждой отдельной сетке непосредственно и на панелях, содержащих элемент управления, без эффектов. Как я могу добиться, чтобы все столбцы делили ширину?
Почему бы просто не использовать ListView GridView и не перетащить заголовок, чтобы изменить размер столбца? – Paparazzi