0

我在 DataGrid 中通过以下方式定义了列的大小:

<DataGrid x:Name="DG" ItemsSource="{Binding X}" AutoGenerateColumns="False" ColumnWidth="*">

这工作正常,直到我在两列之间按下以查看特定列的全部内容的那一刻,然后他不知道我对该列的定义,并通过其内容增加了超出必要的列。

为什么会发生这种情况以及如何预防?

4

1 回答 1

1

您可以通过使用此站点的样式来防止这种情况:http: //msdn.microsoft.com/en-us/library/ff506248.aspx并从中删除:PART_LeftHeaderGripperPART_RightHeaderGripper

<Window.Resources>
...
<!--Style and template for the DataGridColumnHeader.-->
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="VerticalContentAlignment"
Value="Center" />
<Setter Property="Template">
<Setter.Value>
    <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
        <Grid>
            <Border x:Name="columnHeaderBorder"
  BorderThickness="1"
  Padding="3,0,3,0">
                <Border.BorderBrush>
                    <LinearGradientBrush EndPoint="0.5,1"
                   StartPoint="0.5,0">
                        <GradientStop Color="{DynamicResource BorderLightColor}"
              Offset="0" />
                        <GradientStop Color="{DynamicResource BorderDarkColor}"
              Offset="1" />
                    </LinearGradientBrush>
                </Border.BorderBrush>
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1"
                   StartPoint="0.5,0">
                        <GradientStop Color="{DynamicResource ControlLightColor}"
              Offset="0" />
                        <GradientStop Color="{DynamicResource ControlMediumColor}"
              Offset="1" />
                    </LinearGradientBrush>
                </Border.Background>
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
            </Border>

            <!--<Thumb x:Name="PART_LeftHeaderGripper"
 HorizontalAlignment="Left"
 Style="{StaticResource ColumnHeaderGripperStyle}" />
            <Thumb x:Name="PART_RightHeaderGripper"
 HorizontalAlignment="Right"
 Style="{StaticResource ColumnHeaderGripperStyle}" />-->
        </Grid>
    </ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>
    <LinearGradientBrush EndPoint="0.5,1"
           StartPoint="0.5,0">
        <GradientStop Color="{DynamicResource ControlLightColor}"
      Offset="0" />
        <GradientStop Color="{DynamicResource ControlMediumColor}"
      Offset="1" />
    </LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
...
</Window.Resources>
于 2013-02-06T19:17:20.063 回答