我有非常大的网格。我想使用 CheckBox“选中/取消选中所有”,它将选中/取消选中所有行。但是它非常慢,因为有很多 OnPtopertyChanged 事件的调用。如何仅为可见元素引发 OnPropertyChanged 事件?启用行虚拟化。
最佳答案
20000 行很多:)
如果您断开 ItemsSource 绑定(bind)并更改 View 模型中的列表并将 itemssource 设置为新的选中列表,会发生什么情况?
否则,如果他们想要 20000 行,他们可以等待 ;)
编辑
如果你不改变你的 itemssource 你必须为每个项目提高 propertychanged,否则你看不到变化。
另一种方法是将绑定(bind)设置为 null 或 new List
this.MyGridItemsViewModelProperty = new List();//"disconnect" the binding to the grid for the all check/uncheck
然后用选中/取消选中更改您的真实列表并将其设置回网格 ItemsSource
this.MyGridItemsViewModelProperty = myupdatelist;
网格
<Grid ItemsSource="{Binding MyGridItemsViewModelProperty}" />
但我不知道第二种方法是否更快,你应该测试一下。
关于c# - 如何仅为可见元素引发 OnPropertyChanged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8601442/