c# – WPF Datagrid虚拟化和自动高度(不显式)

我正在尝试使用数据网格设计一个视图,一个网格分割器和一个包含一些消息的底部面板.就像是:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <toolkit:DataGrid Grid.Row="0" {details...} />
    <GridSplitter Grid.Row="1" {details...} />
    <TextBox Grid.Row="2" {details...} />
</Grid>

这种布局看起来很完美 – 网格填充了大部分视图,如果需要,我可以使用分割器在底部展开文本框.问题是Datagrid变得非常大,我需要启用虚拟化.这只适用于我相信网格容器的显式高度?

有没有办法获得我想要的布局(网格填充所有可用空间)但是还启用了虚拟化?

最佳答案

Is there a way to get the layout I want (where the grid fills all available space) but also have virtualization enabled?

虚拟化应该在您描述的场景中正常工作,只要Grid的父级不在垂直方向上将其测量为无穷大.如果是这种情况,拆分器将无法工作.

您是如何确定DataGrid中的行未被虚拟化的?

请注意,DataGrid在您的方案中确实具有显式高度.更具体地说,父网格仍然将DataGrid测量到显式高度(在考虑其他行之后,网格中剩余的垂直空间).

点赞