WPF中DataGridColumn的奇怪宽度行为

时间:2012-03-03 21:02:42

标签: .net wpf datagrid datagridcolumn

如果我设置一个包含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中的错误?

1 个答案:

答案 0 :(得分:3)

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

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