Wpf DataGrid中的EnableColumnVirtualization是如何工作的?

Wpf DataGrid中的EnableColumnVirtualization是如何工作的?,wpf,datagrid,Wpf,Datagrid,给定以下数据网格: <DataGrid AutoGenerateColumns="False" HeadersVisibility="Column" IsReadOnly="True" VirtualizingPanel.IsVirtualizing="true" VirtualizingPanel.VirtualizationMode="Standard" EnableColumnVirtualization="True"

给定以下数据网格:

<DataGrid AutoGenerateColumns="False" HeadersVisibility="Column" 
        IsReadOnly="True"
        VirtualizingPanel.IsVirtualizing="true" VirtualizingPanel.VirtualizationMode="Standard"
        EnableColumnVirtualization="True"
        ItemsSource="{Binding Data, IsAsync=True}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Header1" Width="Auto" Binding="{Binding Property1}" />
        <DataGridTextColumn Header="Header2" Width="Auto" Binding="{Binding Property2, Mode=OneWay}" />
    </DataGrid.Columns>
</DataGrid>
</Grid>

为什么它不显示任何行?当我删除
EnableColumnVirtualization
或将其设置为
false
时,一切正常<代码>启用RowVirtualization可以在不显示任何问题的情况下添加或删除


对此行为有何解释?

DataGrid。EnableColumnVirtualization
仅在列中有数据要显示且其可见性设置为可见时才创建列。这种情况会破坏整个
Visibility=Visibility.Visibility
预期

如果即使没有数据也需要列标题,那么不要启用列虚拟化,而是保持行虚拟化


DataGrid.EnableRowVirtualization
只创建屏幕上可见的行。当与
virtualizationPanel.VirtualizationMode=Recycling
结合使用时,它确实可以提高用于在应用程序中显示可视元素的内存量,这样您就不会像以前那样频繁地进行垃圾回收。

只是试图重现问题,但没有成功。列和行正常显示,无论是否启用
ColumnVirtualization
。无论如何,您是否尝试过删除
virtualizengpanel.isvirtualization
virtualizengpanel.VirtualizationMode
声明?如果您只想为列启用虚拟化,那么这些都是多余的,可能是您遇到问题的原因。不幸的是,我没有时间测试这个答案,但它提供了大量信息,看起来很正确。