我对ListView选择项目的方式有疑问。
我有一个ListView绑定到具有'Selected'属性的项的ObservableCollection。我已经选择了这样的选择状态:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Path=Selected, Mode=TwoWay}" />
</Style>
</ListView.ItemContainerStyle>
但是在列表中大约有1000个项目,ListView仅在开始时保存可见对象的容器,或者在已经滚动的情况下保存大约500个容器。因此,即使我选择全部(Ctrl + A),也只为这500个选择设置。
我还尝试了很多其他的解决方案,但没有一个能够解决。
无论如何可能有一个ListView,我可以选择超过500个项目,并在ViewModel中的某处提供此信息。也可以从ViewModel中选择/取消选择。
由于
答案 0 :(得分:0)
我建议您使用listviewitems的数据模板,在该数据模板中,您应该有一个复选按钮,或者复选框等(即维护状态的控件)。然后我会将其数据绑定到您的viewmodel。然后我会这样做,以便你完全在listview控件上绕过你选择的机制。您可以根据可绑定到viewmodel的按钮状态为listviewitems创建模板。
我提议的这个解决方案并不精彩,与IsSelected相比,正如您所期望的那样。如果你想要一个更整洁的版本,也许你可以实现我所建议的作为一个新的封装控件,它使IsSelected可观察/可绑定,就像你期望的那样。可能的第三方控件可能会支持这种行为吗?