【问题标题】:Strange width behavior with DataGridColumn in WPFWPF 中 DataGridColumn 的奇怪宽度行为
【发布时间】:2012-03-21 22:23:53
【问题描述】:

如果我设置一个具有 3 个固定宽度列的数据网格,一切都按预期工作(3 个列测量 100):

<Window x:Class="DataGridTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<DataGrid HorizontalScrollBarVisibility="Visible" >
    <DataGrid.Columns>
        <DataGridTextColumn Width="100" Header="A" />
        <DataGridTextColumn Width="100" Header="B" />
        <DataGridTextColumn Width="100" Header="C" />
    </DataGrid.Columns>
</DataGrid>
</Window>

如果我在调整窗口大小时将一列更改为宽度 * 使其变小,所有这些都会更改它们的宽度。

<Window x:Class="DataGridTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<DataGrid HorizontalScrollBarVisibility="Visible" >
    <DataGrid.Columns>
        <DataGridTextColumn Width="*" Header="A" />
        <DataGridTextColumn Width="100" Header="B" />
        <DataGridTextColumn Width="100" Header="C" />
    </DataGrid.Columns>
</DataGrid>
</Window>

这是预期的行为还是 WPF 中的错误?

【问题讨论】:

  • 这里只是一个小插曲,但没有指定单位,100 是否被解释为“100% 的可用空间”?
  • @sasfrog:完全没有,它们被解释为 100 个独立于设备的单元。
  • 你说得对,这有点出乎意料,但这是默认行为..

标签: .net wpf datagrid datagridcolumn


【解决方案1】:

这是默认情况下数据网格的工作方式:您在列上设置的宽度只是原始宽度。然后,当您缩小数据网格的大小时,它会调整所有列的大小,而与它们的原始宽度无关。

如果你希望你的列无论如何都保持它们的宽度(例如,并显示一个滚动条),你应该使用 MinWidth 来代替/以及

【讨论】:

  • 很高兴听到这个消息。我想知道为什么 datagridcolumn.width 文档中没有记录这一点。
  • WPF 的小好处之一 ;-) 它也让我很头疼……乐于助人