我有一个自定义列表框,其中每个项目都有一个定义的网格,在其中显示框。我可以使用 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>
最佳答案
不要在 Grid
上设置属性 Grid.IsSharedSizeScope="True"
,而是在列表框中设置它,如下所示 -
<ListBox Grid.IsSharedSizeScope="True">
并将其从网格
中删除。
这将使所有
listboxItems
共享相同的大小
,而不是单个项目。
关于c# - 如何为 WPF 网格中的所有元素设置特定的高度/宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13543197/