【问题标题】:Prevent WPF Datagrid column resize防止 WPF Datagrid 列调整大小
【发布时间】:2016-01-22 14:42:43
【问题描述】:

当绑定到的数据字段发生变化时,具有只读列的 Datagrid 会调整其大小。

最初它以大约 100 像素的宽度显示,但由于外部数据源的变化导致它被调整为 150 像素。

即使列内显示的数据发生了变化,我也想确保数据列的宽度不会改变。

设置 MaxWidth 可以解决这个问题,但它会阻止用户手动调整列的大小,这是不可接受的。

【问题讨论】:

标签: c# wpf mahapps.metro


【解决方案1】:

您可以使用 AutoGeneratingColumn 事件并在其中处理宽度。

在 XAML 中:

<DataGrid AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"/>

在后面的代码中:

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.Width = new DataGridLength(100);
}

这实际上会在生成列时限制列大小,但仍允许用户在加载后重新调整大小。

【讨论】:

  • 列不是自动生成的。这仅在自动生成列时才有效。
  • 以为是 - 看看 0xBADF00D 的回答
【解决方案2】:

如果您不像 kyriacos_k answere 那样自动生成列,您可以简单地设置列的宽度和数据网格本身的 CanUserResizeColumns 属性:

<DataGrid ItemsSource="{Binding YourSource}" 
                      CanUserResizeColumns="True"
                      EnableRowVirtualization="True">
    <DataGrid.Columns>
        <DataGridTextColumn Width="100" Header="CustomHeader" Binding="{Binding YourProperty, Mode=OneWay}"  />
    <DataGrid.Columns>
</DataGrid>

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 2011-11-20
    • 2011-08-20
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多