我实现了以下方法来处理MVVM(Binding)模式中的WPF ListView上的多选。
不幸的是我注意到,对于少量选择(< 10项),它可以工作,但之后它会以某种方式破坏!并非所有IsSelected项都会更新!!我猜这可能是解析器的一些溢出。
任何帮助都将不胜感激。
1)在ListViewItem的数据类型中,我放置了一个Selected / IsSelected属性。
public class LVItem
{
// ... properties
public bool Selected { get; set; }
}
2)在XAML中,我将ListViewItem IsSelected属性绑定到此LVItem属性
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding Selected, Mode=TwoWay}" />
...
</ListView.ItemContainerStyle>
我将ListView的ItemsSource绑定到LVItems的ObservableCollection。
3)执行动作/命令时 - 我迭代项目,检查item.Selected == true,如果是,则执行动作。
再次,在调试器上运行清楚地显示我是否选择了太多(ctrl + a在长列表中)只有一些items.Selected将等于true。其他人不是......