Проблема производительности связывания WPF DataGrid - PullRequest
2 голосов
/ 11 августа 2011

В моей таблице данных есть несколько программно добавленных столбцов.

dgData.Columns.Add(new DataGridTextColumn { Width=50, Header = e.Naam, Binding = new Binding(String.Format("Figures[{0}]", e.Id)) });

Коллекция, для которой задан источник элементов сетки данных, является коллекцией элементов данных

public class Data
{
    private string _set = "";
    public string Set
    {
        get { return _set; }
        set { _set = value; }
    }

    private Dictionary<long, int> _figures;
    public Dictionary<long, int> Figures
    {
        get { return _figures; }
        set { _figures = value; }
    }
}

Когда я устанавливаю коллекцию для источника элементов, пройдет несколько лет, прежде чем сетка данных будет заполнена данными, иногда (примерно с 25 столбцами) до 30 секунд или более!

Мой XAML довольно чистый:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Name="dgData">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Set" Binding="{Binding Set}" Width="100"/>
    </DataGrid.Columns>
</DataGrid>

Есть ли какие-либо советы по улучшению производительности этой привязки? Если я удаляю привязку, при создании столбца она работает нормально!

1 Ответ

4 голосов
/ 11 августа 2011

Пожалуйста, попробуйте установить для обоих свойств EnableColumnsVirtualization и EnableRowVirtualization значение true, по крайней мере это улучшит производительность населения, хотя прокрутка все еще будет медленной.

...