1

我有一个绑定到人员列表的 ListBox。我想在网格中显示列表框的项目。我可以使用下面的代码完成此操作,但问题是使用此代码每个项目都有自己的网格。我希望一个网格包含所有项目,以便网格中的每一列自动缩放到最长字符串的宽度。我想我应该改为将数据绑定到网格?如何?

<ListBox ItemsSource="{Binding}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition />
          <ColumnDefinition />
          <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" Text="{Binding Path=Name}" />
        <TextBlock Grid.Column="1" Text="{Binding Path=Age}" />
        <TextBlock Grid.Column="2" Text="{Binding Path=Gender}" />
      </Grid>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
4

1 回答 1

1

您仍然可以使用 DataTemplate 中的 Grid 来完成此操作。您只需要在 ListBox 上指定IsSharedSizeScope附加属性,在要同步的 ColumnDefinitions上指定SharedSizeGroup属性。

或者,您可以将 ListBoxes 面板定义为 Grid,但我不建议这样做,除非您的 Person 对象具有可轻松用于绑定到 Grid.Row 的 ordering 属性。

于 2009-07-16T12:36:27.493 回答