42

我有ListBox一个ItemTemplate由 aTextBlock和 a 组成的 a ComboBoxTextBlock问题是每个项目中文本的宽度不一样,并且ComboBox控件未对齐。
如何TextBlock在模板中设置,使所有项目都具有相同的宽度,即最宽的项目之一?

这是我的xml:

<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>
4

1 回答 1

68

您可以使用IsSharedSizeScope附加属性。在您的模板定义中,将“共享尺寸组”附加到每一列,如下所示:

<Grid.ColumnDefinitions>
    <ColumnDefinition SharedSizeGroup="col1" />
    <ColumnDefinition SharedSizeGroup="col2" />
</Grid.ColumnDefinitions>

...然后将您的 ListBox 定义为共享大小范围,以便它知道以相同的方式调整每个“大小组”的大小:

<ListBox Grid.IsSharedSizeScope="True">...</ListBox>
于 2009-07-09T09:22:45.967 回答