Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
WPF ListView带有ScrollViewer的大列表,VisualTree元素未全部加载_Wpf_Listview_Scrollviewer_Visualtreehelper - Fatal编程技术网

WPF ListView带有ScrollViewer的大列表,VisualTree元素未全部加载

WPF ListView带有ScrollViewer的大列表,VisualTree元素未全部加载,wpf,listview,scrollviewer,visualtreehelper,Wpf,Listview,Scrollviewer,Visualtreehelper,我有一个WPF列表视图,ScrollViewer显示是否有大的列表。ListView包含带有复选框元素的项。我们为用户提供选择全部和取消选择全部的功能 我遇到的问题是列表更大,这意味着我们可以看到元素的子集,用户需要使用滚动条查看其余元素。我选择所有元素和取消选择所有元素的代码使用VisualTreeHelper类将复选框的属性IsChecked设置为true或false。但是,它仅适用于可见的图元。例如,如果我有一个包含14个复选框的集合,其中10个复选框在屏幕上可见,那么它只选择10个可见的

我有一个WPF列表视图,ScrollViewer显示是否有大的列表。ListView包含带有复选框元素的项。我们为用户提供选择全部和取消选择全部的功能

我遇到的问题是列表更大,这意味着我们可以看到元素的子集,用户需要使用滚动条查看其余元素。我选择所有元素和取消选择所有元素的代码使用VisualTreeHelper类将复选框的属性IsChecked设置为true或false。但是,它仅适用于可见的图元。例如,如果我有一个包含14个复选框的集合,其中10个复选框在屏幕上可见,那么它只选择10个可见的复选框。但是,在单击“全选”之前,如果您上下滚动并查看项目,则会选择所有14项…因此VisualTree似乎只加载所需的元素。有没有办法强制它加载所有元素

我可以通过禁用ListView上的ScrollViewer并使用ScrollViewer将其包围来让它工作。这是正确的方法吗

之前:

<ListView x:Name="lstProducts" ItemsSource="{Binding Products}" ItemContainerStyle="{StaticResource STYLE_LISTVIEWITEM}" Grid.Row="1" Margin="4" SelectionMode="Multiple" />
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto" Grid.Row="1">
                    <ListView x:Name="lstProducts" ItemsSource="{Binding Products}" ItemContainerStyle="{StaticResource STYLE_LISTVIEWITEM}" Grid.Row="1" Margin="4" SelectionMode="Multiple" ScrollViewer.CanContentScroll="False" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" />
</ScrollViewer>

工作解决方案:

<ListView x:Name="lstProducts" ItemsSource="{Binding Products}" ItemContainerStyle="{StaticResource STYLE_LISTVIEWITEM}" Grid.Row="1" Margin="4" SelectionMode="Multiple" />
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto" Grid.Row="1">
                    <ListView x:Name="lstProducts" ItemsSource="{Binding Products}" ItemContainerStyle="{StaticResource STYLE_LISTVIEWITEM}" Grid.Row="1" Margin="4" SelectionMode="Multiple" ScrollViewer.CanContentScroll="False" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" />
</ScrollViewer>


请告知

尝试使用
关闭虚拟化,因为listview容器正在回收,并且只有可见的容器存在。

尝试此虚拟化StackPanel.VirtualizationMode=“标准”