代码之家  ›  专栏  ›  技术社区  ›  Marks

ListView选择问题-缓存阻止选择许多项

  •  1
  • Marks  · 技术社区  · 15 年前

    我对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个。因此,即使我选择all(Ctrl+A),选择也只会设置为这500。

    • ListView.SelectedItems文件无法绑定到。
    • 使用ListView的SelectionChanged事件将更改的选择添加和删除到额外集合-无法从ViewModel中选择,因为只能在一个方向上工作。

    有没有可能有一个列表视图,我可以选择500多个项目,并在ViewModel的某个地方有这个信息。也可以从ViewModel中选择/取消选择。

    谢谢

    1 回复  |  直到 15 年前
        1
  •  0
  •   Dessus    14 年前

    我建议您为listviewitems使用一个数据模板,并且在该数据模板中您应该有一个复选按钮或复选框等(即维护状态的控件)。然后我会将其数据绑定到您的viewmodel。然后,我将使其完全绕过listview控件上选定的机制。可以根据可绑定到viewmodel的按钮状态将模板设置为listviewitems。

    我提议的这个解决方案与你所期望的那样工作相比并不好。如果您想要一个更整洁的版本,也许您可以将我在中建议的实现为一个新的封装控件,它使IsSelected成为您所期望的可观察/可绑定的。可能有第三方控件支持此行为?