wpf 在数据网格中只允许选中一个复选框

kgqe7b3p  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(222)

我有一个绑定到数据网格的列表,项目的属性是布尔值,并绑定到数据网格中的复选框。

如何只允许选中一个复选框?
例如,如果选中了一个复选框,则应取消选中其他复选框。
到目前为止,我已经尝试了什么(在ViewModel中,Update是布尔属性):

var update = item.Update;
Items.ForEach(x => x.Update = false);
Items = new List<Item>(Items);
item.Update = update;

但这不是有效的,它抛出一个Exception,表明列表被修改(集合被修改;枚举操作可能不执行)。
有没有一种有效的方法来完成这项工作?
Edit:我使用Binding绑定列表,列表来自类型List〈〉,列表的项实现INotifyPropertyChanged

oaxa6hgo

oaxa6hgo1#

我已经注解了您在此代码中遇到的问题:

var update = item.Update;
Items.ForEach(x => x.Update = false);
Items = new List<Item>(Items); //This creates a new, empty Items list
item.Update = update; //this item relates to an item in the collection that no longer exists

您应该有ObservableCollection<Items> Items,这样如果您从列表中添加/删除项目,绑定将跟随Item实现INotifyPropertyChanged。由于ObservableCollection不支持ForEach,您的代码将变为:

var update = item.Update;
    foreach(var element in Items)
    {
        element.Update=false;
    }
    item.Update = update;

相关问题