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

eri*_*ika 5 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>
Run Code Online (Sandbox Code Playgroud)

截图1

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

<Table>
  <Table.Columns>
    <TableColumn Width="*"/>
    <TableColumn Width="100"/>
    <TableColumn Width="100"/>
  </Table.Columns>
  <TableRowGroup>
    <TableRow>
      <TableCell>...
      <TableCell>...
      <TableCell>...
    </TableRow>
  </TableRowGroup>
</Table>
Run Code Online (Sandbox Code Playgroud)

截图2

小智 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%。

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