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
声明?如果您只想为列启用虚拟化,那么这些都是多余的,可能是您遇到问题的原因。不幸的是,我没有时间测试这个答案,但它提供了大量信息,看起来很正确。