我的网格很大。我想使用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/

10-12 05:51