WPF: отображать большое количество пользовательских элементов управления - PullRequest
1 голос
/ 05 октября 2011

Я собираюсь разработать приложение wpf, которое будет использоваться в качестве инструмента планирования. Основная идея - отобразить таблицу, строки - это люди, столбцы - это дни. Каждая ячейка разбита на две меньшие ячейки, каждая меньшая ячейка соответствует задаче, назначенной сотруднику (строка) на день (столбец).

Должно выглядеть так:

///////////// День 1 // День 2 // День 3 // День 4 // День 5 // День 7 // День 7

Люди1 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2

Люди2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2

Люди3 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2 E1 / E2

Мне нужно иметь возможность использовать настраиваемый элемент управления как одну меньшую ячейку (одну «задачу»).

Я пытался манипулировать ItemsControl, DataGrid, но каждый раз это показывало проблемы с производительностью: либо прокрутка (как по горизонтали, так и по вертикали) была запаздывающей, либо время, используемое приложением для рисования компонентов, было слишком важным.

Поскольку мне, кажется, нужны новые идеи для решения проблемы с производительностью, мне было интересно, если, возможно, кто-то еще имел такую ​​же проблему и сумел с ней справиться ..

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

ItemsControl, как известно, имеет проблемы с производительностью.Вы можете попытаться переключиться на ListBox или ListView, потому что они основаны на VirtualizingStackPanel.

. Кроме того, вопрос WPF - Виртуализация ItemsControl? содержит больше информации о виртуализации.ItemsControl.

Более того, на недавней конференции Build было объявлено , что .NET 4.5 будет содержать значительные улучшения производительности до ItemsControl.Ира Лукезо резюмирует это в записи блога под названием ItemsControl Улучшения производительности в .NET 4.5 .

0 голосов
/ 05 октября 2011

ОК, если вы используете DataGrid, проверьте, дает ли ListView лучшие результаты.

ИЛИ

Я надеюсь, что вы используете DataGrid с DataGridTemplateColumns, если это так, то покажите функциональную графику E1 / E2 в CellEditingTemplate и снимок Drawing E1 / E2 в Celltemplate. Они оба будут выглядеть одинаково, но основанный на чертеже будет работать лучше, так как чертеж будет Freezable во время рендеринга.

...