DataGrid列重新调整大小,重新调整Grid ColumnDefinitions的大小

时间:2011-07-26 07:28:20

标签: wpf xaml datagrid

当重新调整DataGrid(或任何其他具有列的控件)中的列时,如果ColumnSpan在嵌套在ScrollViewer中时跨越ColumnDefinition并使用Width =“*”,那么ColumnDefinitions将会出现这种奇怪的行为也将重新调整大小。

以下XAML示例显示了此行为。

有谁知道这里发生了什么以及为什么会这样? ColumnDefinitions甚至具有固定的宽度,但它们仍在重新调整大小......

<Window.Resources>
    <x:Array x:Key="PointList" Type="{x:Type Point}">
        <Point X="1" Y="4" />
        <Point X="2" Y="3" />
        <Point X="3" Y="2" />
        <Point X="4" Y="1" />
    </x:Array>
</Window.Resources>    

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label Background="Red" Grid.Column="0" Content="Something 1" />
        <Label Background="Green" Grid.Column="1" Content="Something 2" />
        <Label Background="Blue" Grid.Column="2" Content="Something 3" />

        <DataGrid ItemsSource="{StaticResource PointList}" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" />
    </Grid>
</ScrollViewer>

1 个答案:

答案 0 :(得分:0)

我认为这是因为在测量过程中ScrollViewer会在两个维度上报告无限空间(使用滚动条设置)。