【发布时间】:2019-01-06 19:56:39
【问题描述】:
我的问题和这个类似:Bind to Count of List where Typeof
但这对类有什么作用呢?
在我的 MainWindow 中,我有以下 Collection 和 Selected Count 属性
private ObservableCollection<MyClass> _myClassCollection = new ObservableCollection<MyClass>();
public ObservableCollection<MyClass>
{
get => _myClassCollection;
set
{
if(_myClassCollection == value) return;
_myClassCollection = value;
OnPropertyChanged("MyClassCollection");
}
}
public int SelectedCount
{
get => MyClassCollection.Where(x => x.IsSelected == true).Count();
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
我的班级:
public class MyClass : INotifyPropertyChanged
{
// .. Properties
private bool _isSelected;
public bool IsSelected
{
get => _isSelected;
set
{
if(_isSelected == value) return;
_isSelected = value;
OnPropertyChanged("IsSelected");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
那么,如果MyClass 的IsSelected 属性发生了变化,我该如何“运行”SelectedCount 属性呢?我想实时显示 ObservableCollection 的 Selected Items 的数量。
【问题讨论】:
-
顺便说一下,
SelectedCount的代码是O(n)。在循环中的某个地方使用它,例如对于绑定(这将导致O(n^2)),瞧,当您的收藏有大约 500 个项目时,您会看到 100% 的 cpu 核心。