我怎样才能在WPF的列表框中的所有项目相同的宽度列?
我有一个ListBox
和一个ItemTemplate
组成的一个TextBlock
和一个ComboBox
。 问题是TextBlock
内的文本的宽度是不相同的每个项目和ComboBox
控件不alignment。
如何在模板中设置TextBlock
,使所有项目的宽度相同,即最宽的一个?
这是我的xaml:
<ListBox MinHeight="100" ItemsSource="{Binding Trainees}"> <ListBox.ItemTemplate> <DataTemplate> <Grid Margin="1"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <TextBlock VerticalAlignment="Center" Grid.Column="0"> <TextBlock.Text> <MultiBinding StringFormat="{}{0}, {1}"> <Binding Path="LastName" /> <Binding Path="FirstName" /> </MultiBinding> </TextBlock.Text> </TextBlock> <ComboBox HorizontalAlignment="Left" Grid.Column="1" ItemsSource="{Binding Source={StaticResource Functions}}" SelectedValue="{Binding Path=Function}" MinWidth="100" /> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
您可以使用IsSharedSizeScope附加属性。 在您的模板定义中,将“共享大小组”附加到每列,如下所示:
<Grid.ColumnDefinitions> <ColumnDefinition SharedSizeGroup="col1" /> <ColumnDefinition SharedSizeGroup="col2" /> </Grid.ColumnDefinitions>
…然后定义你的ListBox作为一个共享的大小范围,所以它知道以相同的方式为每个“大小组”的大小:
<ListBox Grid.IsSharedSizeScope="True">...</ListBox>