wpf - WPF中TableColumn和GridColumn的Auto和Star的区别

标签 wpf layout

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

但是在表中,我发现了不同的行为。如果您有 3 列的宽度:100、Auto、100;第二列的宽度不取决于其内容。相反,它使用剩余的可用空间作为其宽度。

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

任何人都可以解释这是表中的错误,还是仅仅是默认行为?

附加信息:
如果我将 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 与固定宽度或 Auto 组合,则 Star 列的宽度非常小,其他列将在剩余可用空间上平分。
<Table>
  <Table.Columns>
    <TableColumn Width="*"/>
    <TableColumn Width="100"/>
    <TableColumn Width="100"/>
  </Table.Columns>
  <TableRowGroup>
    <TableRow>
      <TableCell>...
      <TableCell>...
      <TableCell>...
    </TableRow>
  </TableRowGroup>
</Table>

screenshot 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%。

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

关于wpf - WPF中TableColumn和GridColumn的Auto和Star的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7156129/

相关文章:

android - 两次通过 UI 布局 : Why?

python - 在窗口的顶部中心显示 QLabel

c# - 通过单击背景在 ListBox 中选择一个 CheckBox

wpf - 在 UserControl 中绑定(bind) ToolTip

c# - KeyDown 事件的延迟计时器

c# - WPF 工具包饼图样式颜色

ios - 如何在 iOS Objective C 中指定约束?

css - 带有绝对定位页面的粘性页脚

android - 添加更大的透明覆盖层以增加可点击区域,而无需更改布局

C# - RaisePropertyChanged 多次调用并抛出 stackoverflow 异常