Search code examples
c#wpfdatagrid

WPF DataGrid Fixed or Sticky header on vertical scroll


Problem: I am trying to make fixed or sticky header on vertical scroll in WPF DataGrid but I am unable to make it work Below is the pseudo code I have

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <DataGrid Grid.Column="1" ItemsSource="{Binding Test}" x:Name="testfield"
                          SelectionMode="Extended"
                          SelectionUnit="FullRow"
                          AutoGenerateColumns="False"
                          CanUserAddRows="False"
                          CanUserDeleteRows="False"
                          ScrollViewer.CanContentScroll="True"
                          ScrollViewer.VerticalScrollBarVisibility="Auto"
                          ScrollViewer.HorizontalScrollBarVisibility="Auto"
                          PreviewMouseWheel="OnPreviewMouseWheel">

        <DataGrid.Columns>

            <DataGridTemplateColumn Header="Header1" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        ............ column data ...........
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

            <DataGridTemplateColumn Header="Header2" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        ............ column data 2...........
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

            <DataGridTemplateColumn Header="Header3" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                       ................ column data 3 ...........
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>               
        </DataGrid.Columns>
    </DataGrid>
</Grid>

Can anyone please help me on this ?


Solution

  • There was a ScrollViewer on the parent page that was calling my child page , this was causing the entire child page to scroll that includes Headers in child page.