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

用于允许在WPF DataGrid中滚动RowDetail内容的方法,wpf,datagrid,scroll,rowdetails,Wpf,Datagrid,Scroll,Rowdetails,我有一个datagrid,它显示两列文本行数据和一个更大的自由文本详细信息,我通过一个rowdetails模板显示,该模板只有一个边框和一个textblock 我遇到的问题是,文本细节通常大于网格允许的区域。datagrid的默认滚动行为意味着当滚动跳到下一个项目时,用户无法查看整个细节。如果我使用 ScrollViewer.CanContentScroll="False" 然后,随着虚拟化的关闭,datagrid变得异常缓慢,行数非常多 我确实认为我可以通过在scrollviewer中包装r

我有一个datagrid,它显示两列文本行数据和一个更大的自由文本详细信息,我通过一个rowdetails模板显示,该模板只有一个边框和一个textblock

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

ScrollViewer.CanContentScroll="False"
然后,随着虚拟化的关闭,datagrid变得异常缓慢,行数非常多

我确实认为我可以通过在scrollviewer中包装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>

为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>


谢谢。这并不是我想要的,因为带有网格的控件是可调整大小的,细节元素本身也会移动,但这确实让我想知道是否可以在视图代码中添加一些内容来动态设置它。发布一些RowDetailsTemplate的示例代码