我有一个自定义ListBox,其中每个项目都有一个Grid定义,我在哪里显示框。我可以使用SharedSizeGroup属性将宽度设置为相同的长度。但是,如何在父ListBox元素中为所有这些项共享此属性?
我尝试在ListBox元素上设置属性,但这不起作用。
<ListBox
ItemContainerStyle="{StaticResource MyStyle}"...>
<Style x:Key="MyStyle" TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Box" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Box" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Box" />
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<TextBlock Text="{Binding PropertyA}" />
</Border>
<Border Grid.Column="1">
<TextBlock Text="{Binding PropertyB}" />
</Border>
<Border Grid.Column="2">
<TextBlock Text="{Binding PropertyC}" />
</Border>
</Grid>
答案 0 :(得分:2)
而不是在Grid.IsSharedSizeScope="True"
上设置属性Grid
,而不是像这样在Listbox上设置它 -
<ListBox Grid.IsSharedSizeScope="True">
并将其从Grid
删除。
这会使all
成为listboxItems
至share the same size
而非单个项目。