WPF ListView 虚拟化。如何禁用 ListView 虚拟化?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23371810/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
WPF ListView virtualization. How to disable ListView virtualization?
提问by Hari Seldon
I have some troubles with custom ListView (CheckBoxes inside lost their states when scrolling ListView). Can I disable ListView virtualization without visual tree enumerating?
我在使用自定义 ListView 时遇到了一些麻烦(滚动 ListView 时,其中的复选框丢失了状态)。我可以在不枚举可视化树的情况下禁用 ListView 虚拟化吗?
<ListView>
<ListView.Resources>
<Style TargetType="GridViewColumnHeader">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Address">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Content="{Binding Address}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
回答by 123 456 789 0
As stated by H.B. in their answer here:
正如 HB 在他们的回答中所说:
Set
VirtualizingStackPanel.IsVirtualizingto false on theListViewor set a normalStackPanelas theListView.ItemsPanel.
在 上设置
VirtualizingStackPanel.IsVirtualizing为 falseListView或将正常设置StackPanel为ListView.ItemsPanel。
<ListView VirtualizingStackPanel.IsVirtualizing="False"/>
or
或者
<ListView>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
回答by paparazzo
In addition to binding the IsChecked property
除了绑定 IsChecked 属性
You also may need to turn off recycling
您可能还需要关闭回收
VirtualizingStackPanel.VirtualizationMode="Standard"

