DataGrid работает слишком медленно в бета-версии SL4 и SL5 при горизонтальной прокрутке - PullRequest
0 голосов
/ 17 мая 2011

Я сделал простой пример, который показывает низкую производительность DataGrid как на SL4, так и на SL5 бета. Как макет корня у меня

<sdk:DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="dataGrid1" />

Тогда в коде я установил:

dataGrid1.RowHeight = 30;
dataGrid1.MaxColumnWidth = 200;
dataGrid1.MinColumnWidth = 200;
dataGrid1.RowHeaderWidth = 10;

Затем я создаю 50 столбцов типа DataGridTextColumn:

        for(int i=0; i<50; i++) {
            DataGridTextColumn col = new DataGridTextColumn {
                Header = "Column "+i,
                CanUserReorder = true,
                CanUserResize = true,
                CanUserSort = true,
                MinWidth = colWidth,
                MaxWidth = colWidth,
                Width = new DataGridLength(colWidth, DataGridLengthUnitType.Pixel),
                Binding = new Binding(string.Format("C{0}", i)),
            };
            dataGrid1.Columns.Add(col);
        }

А затем 100 строк:

    private void CreateRows()
    {
        var rows = new ObservableCollection<RowInfo>();
        for(int i=0; i<100; i++) {
            RowInfo row = new RowInfo();
            for(int j=0; j<50; j++) {
                typeof(RowInfo).GetProperty("C"+j).SetValue(row, Guid.NewGuid().ToString(), null);
            }
            rows.Add(row);
        }
        dataGrid1.ItemsSource = rows;
    }

RowInfo - простой объект, содержащий свойства, такие как:

        public string C0 { get; set; }
... till

        public string C49 { get; set; }

Когда я запускаю приложение и получаю сетку, он полностью занимает вкладку браузера. Но когда я прокручиваю его по горизонтали до конца - он идет слишком медленно и загрузка процессора составляет более 60%. Прокрутка во второй раз идет немного быстрее, но все еще медленно. Это очень важно для нашего приложения. Есть ли у вас какие-либо предложения по повышению производительности?

1 Ответ

0 голосов
/ 17 мая 2011

Попробуйте установить для «EnableColumnVirtualization» и / или «EnableRowVirtualization» значение true.Это решало проблемы с отставанием для меня в прошлом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...