Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF数据网格与x27之间的差异;s EnableRowVirtualization和VirtualzingStackPanel.is虚拟化属性_C#_Wpf_Datagrid_Ui Virtualization - Fatal编程技术网

C# WPF数据网格与x27之间的差异;s EnableRowVirtualization和VirtualzingStackPanel.is虚拟化属性

C# WPF数据网格与x27之间的差异;s EnableRowVirtualization和VirtualzingStackPanel.is虚拟化属性,c#,wpf,datagrid,ui-virtualization,C#,Wpf,Datagrid,Ui Virtualization,几乎没有关于环境影响的信息 VirtualizingStackPanel.IsVirtualizing="True" 及 有人能澄清区别是什么吗 另外,作为一个额外的好处,有人能澄清一下EnableRowVirtualization和EnableColumnVirtualization是否在3.5网格上做了什么,因为MSDN文档只列出了4.0版的这些属性,但它们肯定存在于3.5版中 谢谢。无论是虚拟化还是启用RowVirtualization/启用ColumnVirtualization都遵

几乎没有关于环境影响的信息

VirtualizingStackPanel.IsVirtualizing="True" 

有人能澄清区别是什么吗

另外,作为一个额外的好处,有人能澄清一下EnableRowVirtualization和EnableColumnVirtualization是否在3.5网格上做了什么,因为MSDN文档只列出了4.0版的这些属性,但它们肯定存在于3.5版中


谢谢。

无论是
虚拟化
还是
启用RowVirtualization
/
启用ColumnVirtualization
都遵循相同的原则,即只有在需要时才对项目进行可视化,并且重复使用容器

本质上,
面板
(或
网格
)跟踪可见的内容,如果更改了,它将使用内部类,
“ItemContainerGenerator”
,来调整和构建新项目()

两者的动机都是容器仅根据需要生成,从而节省内存并提高性能

至于为什么有两个:面板设计为仅向一个方向延伸,水平或垂直;所以他们为它实现了一个附加属性。另一方面,
网格
在两个维度中扩展,因此它们为每个维度实现了一个属性

另一个区别是学术性的:
isvirtualization
是一个附加属性,而
Grid
的对应属性是本机属性。不知道他们为什么选择这种差异


关于EnableRowVirtualization/EnableColumnVirtualization属性的方向,相关链接是和

有趣的说明。您能否进一步澄清设置附加属性而不是/以及EnableRowVirtualization/EnableColumnVirtualization属性的影响?我知道他们开启/关闭同一种行为,但我仍然不知道是否可以使用其中一种,即他们是否有完全重叠的职责,或者实际上在幕后做不同的事情?这种行为是在ItemsControl级别实现的,因此会影响从中派生的类。”在引擎盖下,除了方向性之外,算法没有明显的差异。也。。。使用一种设置而不是另一种设置并不是一种选择,因为本机属性应该在可用时使用。
EnableRowVirtualization="True" EnableColumnVirtualization="True".