我有一个带有3个模板列的DataGrid,看起来像这样:
<DataGridTemplateColumn Header="{userInterface:Translation Description}"
Width="2*"
IsReadOnly="True"
SortMemberPath="Model.Translation"
Visibility="{Binding Path=DataContext.(viewModel:ParameterGridViewModel.ShowDescriptionColumn), Source={StaticResource ProxyElement}, Converter={StaticResource BooleanToVisibilityConverter}}">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell"
BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="IsHitTestVisible"
Value="False" />
</Style>
</DataGridTemplateColumn.CellStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="viewModel:ParameterViewModel">
<TextBlock Text="{Binding Model.Translation}"
ToolTip="{Binding Model.Translation}"
TextTrimming="CharacterEllipsis" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Virtualization
启用并正常工作(我确实使用Snoop进行了检查)。用大约1000行填充DataGrid
大约需要500毫秒。如果我将TemplateColumns
替换为DataGridTextColumns
,即使Template
仅包含TextBlock
,性能也会更好(50-100ms)。
为什么TemplateColumn
表现如此糟糕?我怎样才能获得一个表现良好的Templateable DataGrid
(实际上1000个项目限制了WPF DataGrid
,这很有趣)。事件DataGridTextColumn
表现不可接受。