鉴于以下情况Datagrid
:
<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>
Run Code Online (Sandbox Code Playgroud)
为什么它不显示任何行?当我删除EnableColumnVirtualization
或设置它时false
一切正常。EnableRowVirtualization
可以添加或删除而不显示任何问题。
这种行为有解释吗?
DataGrid.EnableColumnVirtualization
仅当有数据显示在这些列中并且其可见性设置为可见时才创建列。这种破坏了整个Visibility=Visibility.Visible
预期。
如果您需要即使在没有数据的情况下也有列标题,那么不要启用列虚拟化,而是保持行虚拟化。
DataGrid.EnableRowVirtualization
只创建将在屏幕上可见的行。与 结合使用时VirtualizingPanel.VirtualizationMode=Recycling
,它可以真正提高用于在应用程序中显示可视元素的内存量,这样您就不会经常遇到垃圾收集。
归档时间: |
|
查看次数: |
2776 次 |
最近记录: |