ContentTemplateSelector не переоценивает изменение привязки
ПРЕДИСЛОВИЕ
Я создал два разных типа DataTemplates, чтобы ускорить загрузку моих ячеек сетки данных. Один в основном текстовый блок, другой более дорогой UserControl. При загрузке селектор шаблона данных решает, нужно ли ему загружать более дешевый или более дорогой элемент управления, что увеличивает первую загрузку / производительность с ~12 секунд до ~2, потому что большинство ячеек не должны быть сложными и Время, необходимое для загрузки простого шаблона, практически ничто по сравнению с другим.
Во всяком случае, он отлично работает на нагрузке. Но когда я изменяю данные внизу, это вызывает изменение свойства и должно заставить DataTemplateSelector снова вызывать SelectTemplate(), чтобы переоценить, какой шаблон данных будет использоваться - ну, это не так.
Интересно то, что после вышеуказанного сбоя, когда я щелкаю по ячейке, она вызывает SelectTemplate() и при необходимости переворачивает DataTemplate.
КОД
<DataGrid>
.....
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentControl Content="{Binding Intervals[0].Self}"
ContentTemplateSelector="{StaticResource TxtVsExpensiveCell_TemplateSelector}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Обратите внимание, что более сложный элемент управления, выбранный селектором DataTemplate, работает отлично, так как я тестировал его без DataTemplateSelector. Кроме того, примечание о Binding Intervals[0].Self - self - это свойство, которое возвращает "this", ссылку на объект, с которым я связан, единственной причиной этого является (когда Self поднимается) заставить DataTemplate быть переоцененным. Видимо, это не совсем работает.
ВОПРОС
Как заставить шаблон данных переоценить?
Вспомогательный код *
это мой ресурс dict (ничего особенного)
<DataTemplate x:Key="SimpleTemplate">
<TextBlock DataContext="{Binding}"/>
</DataTemplate>
<DataTemplate x:Key="ComplexTemplate">
<Views:ComplexCell DataContext="{Binding}"/>
</DataTemplate>
<Views:MyTemplateSelector
x:Key="TxtVsExpensiveCell_TemplateSelector"
SimpleTemplate="{StaticResource SimpleTemplate}"
ComplexTemplate="{StaticResource ComplexTemplate}"/>
и, очевидно, у меня есть класс MyTemplateSelector, который переопределяет SelectTemplate и работает просто отлично...