Я нашел решение этой проблемы, и это было не так сложно, как я думал. Шаблон применяется к заголовку столбца ListView. Этого достаточно, чтобы изменить значение заголовка, чтобы создать внутреннее событие WPF, которое автоматически выполнит SelectTemplate для DataTemplateSelector.
Вот пример кода:
if (MyListView != null)
{
foreach (GridViewColumn col in (MyListView.View as GridView).Columns)
{
string header = col.Header.ToString();
col.ClearValue(GridViewColumn.HeaderProperty);
col.SetValue(GridViewColumn.HeaderProperty, header);
}
}
Вот и все.
Надеюсь, это поможет кому-то в будущем.