Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use ScrollViewer inside another Scrollviewer

The structure of my wpf application is like:

<Scrollviewer>
   <Grid>
       <Scrollviewer>
            <DataGrid>

My Goal is, if the DataGrid exceeds the height of the screen to use it's own Scrollviewer. At the Moment only the outside ScrollViewer is used and so i have to scroll the whole Grid.

Can someone please tell me how to do this?

like image 770
TheJoeIaut Avatar asked Dec 22 '22 08:12

TheJoeIaut


1 Answers

You need to set a height on the inner ScrollViewer, otherwise it'll stretch as much as it needs based on it's content's size.

<Window x:Name="RootWindow">
    <ScrollViewer>
        <Grid Height="{Binding ElementName=RootWindow, Path=ActualHeight}">
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="2*" />
            </Grid.RowDefinitions>

            <ScrollViewer Grid.Row="1">
                <DataGrid />
            </ScrollViewer>
        </Grid>
    </ScrollViewer>
</Window>

Also, the DataGrid has built-in properties for it's own ScrollBars which you can use instead of wrapping the DataGrid in a ScrollViewer. This will scroll the data and always leave the headers visible, instead of scrolling the entire datagrid.

<DataGrid HorizontalScrollBarVisibility="Auto" 
          VerticalScrollBarVisibility="Auto" />
like image 96
Rachel Avatar answered Jan 02 '23 23:01

Rachel