Silverlight DataGrid SelectedItems.Add非常慢

时间:2012-08-06 16:12:42

标签: c# performance silverlight datagrid mvvm-light

我正在开发一个基于DataGrid的自定义控件,它具有自己独特的功能,但也包括一些按钮,无论何时使用它都会随控件一起提供。按钮实现过滤器,全选和清除选择。我对后两者有性能问题。

这是响应MVVMLight消息的代码,指示提供的对象列表需要切换其选择。在SelectAll和ClearSelection的情况下,我使用Linq函数来获取适当的点列表。我知道事实是缓慢的部分是在foreach循环中。循环上方和下方的代码改变了自定义控件的状态,以便忽略与选择有关的其他功能。

            SelectionChanged -= GridSelectionChanged;
            _isUpdating = true;
            var points = obj.Content;
            foreach (var point in points)
            {
                if (point.IsSelected)
                {
                    SelectedItems.Add(point);
                }
                if (!point.IsSelected)
                {
                    SelectedItems.Remove(point);
                }
            }
            _isUpdating = false;
            SelectionChanged += GridSelectionChanged;

Ctrl + A效果非常好,这让人倍感沮丧。这一切都归因于SelectedItems.add / remove慢吗?有什么方法可以解决这个问题吗?

如果有必要提供更多信息,请与我们联系。感谢。

0 个答案:

没有答案