标签:
一般情况,对于DataGrid需要多选其中多项时,遍历这些项使用DataGrid.SelectedItems.Add(item)即可,但当需要多选的项目很多时,比如几千条,几万条,这样的操作却是相当耗时的,因为每次Add操作都会引起实现的界面刷新操作,查看DataGrid源码,看到DataGrid提供了更新前后的方法,即BeginUpdateSelectedItems与EndUpdateSelectedItems,相关的测试代码如下:
var dttype = typeof (DataGrid); var beginme = dttype.GetMethod("BeginUpdateSelectedItems", BindingFlags.NonPublic | BindingFlags.Instance); var endme = dttype.GetMethod("EndUpdateSelectedItems", BindingFlags.NonPublic | BindingFlags.Instance); beginme.Invoke(dt, null); foreach (var item in vm.PersonCollection) { dt.SelectedItems.Add(item); } endme.Invoke(dt, null);
这样,实际触发的SelectionChanged事件只触发一次,大大提高了效率。
标签:
原文地址:http://www.cnblogs.com/maigc249/p/5101707.html