我的网格很大。我想使用CheckBox的“check/uncheck all”,将选中/取消选中所有行。但这非常慢,因为OnPtopertyChanged事件的调用很多。如何仅针对可见元素引发OnPropertyChanged事件?行虚拟化已启用。
最佳答案
20000行很多:)
如果断开ItemsSource绑定(bind)的连接,更改了 View 模型中的列表并将ItemsSource设置为新的已检查列表,会发生什么情况?
相反,如果他们想要20000行,则可以等待;)
编辑
如果您不更改项源,则必须提高每个项的属性更改,否则看不到更改。
另一种方法是将绑定(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/