我怎样才能在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>