【发布时间】:2014-04-29 17:51:12
【问题描述】:
我在使用自定义 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>
【问题讨论】:
-
不要禁用虚拟化。只需将复选框的
IsChecked属性绑定到某个相关的布尔值。 -
关于绑定是个好主意,但是当我在 Snoop 中更改 ListView 的私有属性时(VirtualizingPanel.IsVirtualising 和 VirtualizingPanel.IsContainerVirtualizable)一切正常。
-
看我的回答。尝试关闭回收。
-
我在 ListView 中只有大约 50 条记录。性能不重要。