Wpf ContentTemplateSelector不会在绑定更改时重新计算

Wpf ContentTemplateSelector不会在绑定更改时重新计算,wpf,datagrid,contenttemplateselector,Wpf,Datagrid,Contenttemplateselector,前言 <DataGrid> ..... <DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ContentControl Content="{Binding Intervals[0].Self}" ContentTemplateSelector

前言

<DataGrid>
 .....
<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding Intervals[0].Self}" 
                      ContentTemplateSelector="{StaticResource TxtVsExpensiveCell_TemplateSelector}"/>
         </DataTemplate>
       </DataGridTemplateColumn.CellTemplate>
我创建了两个不同的数据模板,以加快数据网格单元的加载速度。一个基本上是文本块,另一个是更昂贵的用户控件。加载时,数据模板选择器决定是否需要加载便宜的控件或更昂贵的控件,这将首次加载/性能从约12秒提高到约2秒,因为大多数单元格不需要复杂,加载简单模板所需的时间与其他单元格相比几乎不算什么

不管怎样,它在负载下工作得很好。但是,当我更改下面的数据时,会引发属性changed,并应强制DataTemplateSelector再次调用SelectTemplate(),以重新评估要使用的数据模板,但事实并非如此

有趣的是,在上述失败之后,当我单击单元格时,它会调用SelectTemplate(),并在需要时翻转数据模板

代码

<DataGrid>
 .....
<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding Intervals[0].Self}" 
                      ContentTemplateSelector="{StaticResource TxtVsExpensiveCell_TemplateSelector}"/>
         </DataTemplate>
       </DataGridTemplateColumn.CellTemplate>

.....
请注意,DataTemplateSelector选择的更复杂的控件可以完美地工作,因为我在没有DataTemplateSelector的情况下对其进行了测试。 另外,还有一个关于绑定间隔[0]的说明。Self-Self是一个返回“this”的属性,即我要绑定到的对象的ref,唯一的原因是to(在引发Self时)强制重新计算DataTemplate。显然这不太管用

问题

如何强制数据模板重新评估

支持代码*

这是我的资源目录(没什么特别的)


显然,我有一个MyTemplateSelector类,它重写SelectTemplate,并且工作正常…

可能的dup?