在 GridViewColumn 中设置多个 TextBlock

Set multiple TextBlock inside a GridViewColumn

我正在尝试在 GridViewColumn 中设置两个 TextBlock:

<GridViewColumn.CellTemplate>
  <DataTemplate>
    <TextBlock TextWrapping="Wrap" Text="{Binding PlayerA}" />
    <TextBlock TextWrapping="Wrap" />
  </DataTemplate>
</GridViewColumn.CellTemplate>

但是我知道内容已经设置好了,为什么?

DataTemplate属性只能有一个child。你设置了两个children,两个TextBoxes.

您必须将 TextBoxes 包含在一个公共容器中。

如果想要简单的水平拼接,可以这样写:

<GridViewColumn.CellTemplate>
  <DataTemplate>
    <StackPanel Orientation="Horizontal">
      <TextBlock Text="blabla1"/>
      <TextBlock Text="blabla2"/>
    </StackPanel>
  </DataTemplate>
</GridViewColumn.CellTemplate>

如果你想在两个TextBoxes之间平均分配Width,你可以这样写:

<GridViewColumn.CellTemplate>
  <DataTemplate>
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <TextBlock Grid.Column="0" Text="1"/>
      <TextBlock Grid.Column="1" Text="2"/>
    </Grid>
  </DataTemplate>
</GridViewColumn.CellTemplate>

WPF 容器有很多,这取决于你想要实现什么布局,但规则是:DataTemplate 必须只包含一个元素.