0

データビューをデータグリッドにバインドしようとして、最初の行を行ヘッダーとして表示しようとすると問題が発生します。

私のデータグリッドは次のようになります。

<DataGrid DockPanel.Dock="Top" Margin="15,15" HorizontalAlignment="Left" Name="ReportDataGrid" CanUserSortColumns="False"  CanUserResizeColumns="False" CanUserReorderColumns="False" AutoGenerateColumns="True" CanUserResizeRows="False" IsReadOnly="True" HorizontalScrollBarVisibility="Auto" HeadersVisibility="All" Visibility="{Binding Path=ShowReportDataGrid}" SelectionMode="Single" SelectionUnit="Cell" ClipboardCopyMode="IncludeHeader">
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="Width" Value="48"></Setter>
                </Style>
                    </DataGrid.CellStyle>
                        <DataGrid.ColumnHeaderStyle>
                            <Style TargetType="DataGridColumnHeader">
                                <Setter Property="Background" Value="{StaticResource DataGrid_Style_Header}" />
                                <Setter Property="Foreground" Value="White" />
                                <Setter Property="Padding" Value="10,0,10,0"/>
                                <Setter Property="Width" Value="48"></Setter>
                            </Style>
                        </DataGrid.ColumnHeaderStyle>
                        <DataGrid.RowHeaderStyle>
                            <Style TargetType="DataGridRowHeader">
                                <Setter Property="Background" Value="{StaticResource DataGrid_Style_Header}" />
                                <Setter Property="Foreground" Value="White" />
                                <Setter Property="Padding" Value="10,0,10,0"/>
                                <Setter Property="Width" Value="48"></Setter>
                            </Style>
                        </DataGrid.RowHeaderStyle>
                    </DataGrid>

このコードで何が起こるかというと、データグリッドが行ヘッダーを挿入してから、データビューからのデータをグリッドの残りの部分に配置します。行ヘッダーは空のままです。データビューの最初の列を行ヘッダーに取得するための良い解決策は何ですか?

4

1 に答える 1

0

代わりに、次のようにスタイルで問題を解決することになりました。

<DataGrid.CellStyle>
    <Style TargetType="DataGridCell">
        <Setter Property="Width" Value="48"></Setter>
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Column.DisplayIndex, Mode=OneWay}" Value="0">
                    <Setter Property="Background" Value="{StaticResource DataGrid_Style_Header}" />        
                    <Setter Property="Foreground" Value="White" />
                    <Setter Property="Width" Value="60"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.CellStyle>
于 2012-05-10T10:56:08.410 に答える