WPF中TableColumn和GridColumn的Auto和Star之间的差异

时间:2011-08-23 04:02:27

标签: wpf layout

在Grid中,Auto表示内容宽度将定义列宽,Star表示列宽将使用可用的左侧空间。

然而在表中,我发现了不同的行为。如果你有3列宽度:100,自动,100;宽度第二列不依赖于其内容。相反,它使用剩余的可用空间作为其宽度。

此外,在表格中,如果将“星形”列与“自动”或“固定像素宽度”列组合,则“星形”列将非常小,大约1个字符宽度。

有人可以解释这是否是Table中的错误,或者它只是默认行为?


其他信息: 如果我将Auto与固定宽度组合,则Auto列(第二个)将使用剩余的可用空间。

<Table>
  <Table.Columns>
    <TableColumn Width="100"/>
    <TableColumn Width="Auto"/>
    <TableColumn Width="100"/>
  </Table.Columns>
  <TableRowGroup>
    <TableRow>
      <TableCell>...
      <TableCell>...
      <TableCell>...
    </TableRow>
  </TableRowGroup>
</Table>

screenshot 1

如果我将Star与固定宽度或自动相结合,则Star列的宽度非常小,其他列将在剩余可用空间上平均分配。

<Table>
  <Table.Columns>
    <TableColumn Width="*"/>
    <TableColumn Width="100"/>
    <TableColumn Width="100"/>
  </Table.Columns>
  <TableRowGroup>
    <TableRow>
      <TableCell>...
      <TableCell>...
      <TableCell>...
    </TableRow>
  </TableRowGroup>
</Table>

screenshot 2

1 个答案:

答案 0 :(得分:2)

好的,我知道这不是一个答案,但由于目前没有其他人回应,我想我会尝试帮助一点。 这似乎是一个至少从WPF 4.0开始出现的错误

https://connect.microsoft.com/VisualStudio/feedback/details/724483/the-width-of-tablecolumns-in-a-wpf-flowdocument-doesnt-work-with-non-star-widths

除非你使用星形符号,否则表格似乎相对无用,因为我可以告诉基本函数更像是一个百分比,但是那里也存在一些不稳定的行为。

如果你把所有东西都设置为星形它基本上相当于全面自动,但是将一个或多个元素设置为除星形以外的任何元素将导致现有星星占据总宽度的1%,同样如果你将它改为50 *它将占总宽度的50%。

我知道这不是很有帮助,但这是我能做的最好的事情。