【发布时间】:2015-06-10 07:23:36
【问题描述】:
我是 WPF 新手。我有一个大约 10000 行的数据网格。为了实现搜索和高亮功能,实现了以下代码
<Style x:Key="DefaultCell" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<local:CustomTextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Content.Text}">
<!--InlineCollection="{Binding ., Converter={StaticResource StringToXamlConverter} }"/>-->
<local:CustomTextBlock.InlineCollection>
<MultiBinding Converter="{StaticResource StringToXamlConverter}">
<Binding RelativeSource="{RelativeSource Self}" Path="." />
<Binding RelativeSource="{RelativeSource Self}" Path="(local:SearchOperations.SearchTerm)"/>
</MultiBinding>
</local:CustomTextBlock.InlineCollection>
</local:CustomTextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
搜索和突出显示就像一个魅力。但是单击垂直滚动条时,整个网格会冻结。这可能是什么原因?
【问题讨论】:
-
我的猜测是它正在为每一行运行 Converter。你能花一点时间来测试一下这个理论吗?
-
@MikeEason 是的,转换器必须遍历每个单元格才能实现搜索功能。
-
解决方案参考Enable Virtualization