我有一个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>
请告知!