После некоторых дальнейших исследований я могу сказать: проблема не в создании самого контейнера, а в его содержимом. 15 текстовых ящиков тяжелее, чем я думал. Я заменил TextBox
на TextBlock
, и это было так же быстро, как и раньше.
Поскольку мне нужно редактировать, я изменил DataGridTemplateColumn.CellTemplate
на DataGridTemplateColumn.CellEditingTemplate
и создал новый шаблон CellTemplate с TextBlock. Я переключаю шаблоны с помощью:
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="IsEditing" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
, поэтому только в выбранной ячейке / строке отображается TextBox
.
Конечно, теперь у меня появились новые проблемы с Focusmanagement и Keyboardnavigation. Но я думаю, что должен сделать это так.