c# - 如何仅为可见元素引发 OnPropertyChanged?

标签 c# .net wpf mvvm

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

相关文章:

.net - 如何在 where 子句中将 UserDefinedFunctionProvider.Invoke 与 udfs 结合使用

.net - 仅使用Exception类作为传输机制?

c# - WPF 设计器错误值不能为空。参数名称 : pattern

c# - 窗口 SizeToContent 和 ListBox 大小调整

c# - 双向绑定(bind)到 WPF 中多个列表框上的 ListBox SelectedItem

c# - 如何在执行 MSTest 测试期间写入 Console.Out

c# - 如何打开DLL文件看里面写的是什么?

c# - 如何检查网络上的计算机是否在线?

c# - 使用 ASP.NET Identity 2.2.1 设置简单注入(inject)器

c# - "Speech bubble"通知