5

DataGrid をカスタム オブジェクトの ObservableCollection にバインドしています。断続的に(おそらく2行または3行で)nubbieオブジェクト(幅約4ピクセル、行の高さ)のようなボタンが左端に表示され、列がその行に対してわずかにインデントされるようになります。並びます。グリッドを同じオブジェクトに再バインドすると、ナビーがまったく発生しないか、別の行に表示される可能性があるため、これらの行に特別なことはないと思います。

私はいくつかのカスタム スタイルを使用しており、最初の列は DataTemplate であるため、問題の原因となっている可能性のあるものを誰かが見ることができる場合に備えて、それを以下に含めました。私はこの時点でちょっと困惑しています...

<DataGrid  Style="{DynamicResource WPFDataGridStyle}" Background="White" BorderBrush="LightGray" FontSize="13"
        CanUserReorderColumns="True" HorizontalGridLinesBrush="#FFEFEFEF" VerticalGridLinesBrush="#FFEFEFEF" HeadersVisibility="Column" 
        AlternatingRowBackground="#FFF4F4F4" CanUserResizeRows="False" SelectionMode="Single" AutoGenerateColumns="False" 
        CanUserAddRows="False" CanUserDeleteRows="False" CanUserSortColumns="True" FrozenColumnCount="3"
        ItemsSource="{Binding VM.FilteredSteamJobs,Mode=TwoWay,Source={StaticResource VM}}" 
        SelectedItem="{Binding VM.SelectedJob,Mode=TwoWay,Source={StaticResource VM}}"
        Visibility="{Binding VM.IsScheduleLoaded,Mode=OneWay,Source={StaticResource VM},Converter={StaticResource BoolToVisConv}}"  >
    <DataGrid.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#AAA7CDF0"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#AAA7CDF0"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black"/>

        <Style x:Key="WPFDataGridStyle" TargetType="{x:Type DataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
            <Setter Property="ColumnHeaderStyle" Value="{DynamicResource ColumnHeaderStyle1}"/>
            <Setter Property="CellStyle" Value="{DynamicResource CellStyle1}"/>
        </Style>

        <Style x:Key="ColumnHeaderStyle1" TargetType="DataGridColumnHeader" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}">
            <Setter Property="Height" Value="25"/>
            <Setter Property="Background">
                <Setter.Value>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#FFC8E0FF" Offset="1"/>
                        <GradientStop Color="#FFF5FAFF" Offset="0"/>
                        <GradientStop Color="#FFDBEBFF" Offset="0.5"/>
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
            <Setter Property="Padding" Value="3"/>
            <Setter Property="BorderThickness" Value="0.5,0"/>
            <Setter Property="BorderBrush" Value="DarkGray"/>
            <Setter Property="Foreground" Value="Black"/>
            <Setter Property="FontSize" Value="13" />
        </Style>

        <Style x:Key="CellStyle1" TargetType="{x:Type DataGridCell}">
            <Setter Property="Height" Value="25"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="FontSize" Value="13"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="Padding" Value="3,0"/>
        </Style>
    </DataGrid.Resources>

    <DataGrid.Columns>

        <!--Selection Checkbox Column-->
        <DataGridTemplateColumn IsReadOnly="True" CanUserResize="False" CanUserSort="False" Width="Auto">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Grid>
                        <CheckBox VerticalAlignment="Center" HorizontalAlignment="Center" Margin="3"
                                  IsChecked="{Binding Path=IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                                  Visibility="{Binding Status,Converter={StaticResource StatusToSelectVisConv}}">
                            <CheckBox.LayoutTransform>
                                <ScaleTransform ScaleX="1.2" ScaleY="1.2"/>
                            </CheckBox.LayoutTransform>
                        </CheckBox>
                    </Grid>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <CheckBox VerticalAlignment="Center" Checked="HeaderSelect_Checked" Unchecked="HeaderSelect_Unchecked">
                            <CheckBox.LayoutTransform>
                                <ScaleTransform ScaleX="1.3" ScaleY="1.3"/>
                            </CheckBox.LayoutTransform>
                        </CheckBox>
                    </StackPanel>
                </DataTemplate>                 
            </DataGridTemplateColumn.HeaderTemplate>
        </DataGridTemplateColumn>
4

1 に答える 1

8

私もこの問題に苦労しており、間違っていなければ、RowHeaderWidth="0"この「バグ」を回避するために DataGrid を設定する必要があります。

HeadersVisibilityが に設定されていても、ランダムな行の行ヘッダーが表示されているようですColumn

于 2012-11-14T17:24:02.190 に答える