允许在WPF DataGrid中滚动RowDetail内容的方法

mwt*_*wtb 7 wpf datagrid scroll rowdetails

我有一个数据网格,显示带有两列文本行数据的项目和一个更大的自由文本细节,我通过一个只带边框和文本块的rowdetails模板显示.

我遇到的问题是文本细节通常大于网格允许的区域.数据网格的默认滚动行为意味着当滚动跳转到下一个项目时,用户无法查看整个细节.如果我通过使用解决这个问题

ScrollViewer.CanContentScroll="False"
Run Code Online (Sandbox Code Playgroud)

然后,当关闭虚拟化时,数据网格变得非常慢,并且有大量行.

我确实认为我可以通过在rowviewer中包装rowdetail来解决这个问题,但这不起作用,因为细节区域不限于渲染区域.

那么,有人可以提供一些有用的选择吗?我的WPF知识非常少,如果有一些明显的解决方法,那么道歉.

编辑:RowDetailsTemplate

<DataGrid.RowDetailsTemplate>
    <DataTemplate >
        <Border Background="Gray"
                Padding="5,5,5,5" CornerRadius="5">
            <TextBlock Background="Transparent" 
                       Foreground="White" 
                       TextWrapping="Wrap"
                       Text="{Binding Text}"/>
        </Border>
    </DataTemplate>
</DataGrid.RowDetailsTemplate>
Run Code Online (Sandbox Code Playgroud)

Fre*_*lad 9

为RowDetails添加ScrollViewer的一种方法是为RowDetails指定MaxHeight,就​​像这样

<DataGrid ...>
    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <Grid MaxHeight="75">
                <ScrollViewer>
                    <Border HorizontalAlignment="Stretch" CornerRadius="5" Background="Black" Margin="5" Padding="5">
                        <TextBlock Text="{Binding RowDetails}" Foreground="#509CD5" FontSize="20" Width="300" TextWrapping="Wrap"/>
                    </Border>
                </ScrollViewer>
            </Grid>                    
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>
    <DataGrid.Columns>
    <!-- ... -->
</DataGrid>
Run Code Online (Sandbox Code Playgroud)