DataGrid与TemplateColumn。绩效问题

时间:2016-04-04 08:49:20

标签: c# wpf datagrid virtualization

我有一个带有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表现不可接受。

0 个答案:

没有答案