WPF: Wende DataTemplateSelector erneut an, wenn sich ein bestimmter Wert ändert

Also hier ist die XAML, die ich habe:

<ItemsControl ItemsSource="{Binding Path=Groups}" ItemTemplateSelector="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=ListTemplateSelector}"/>

Hier ist meine ListTemplateSelector-Klasse:

public class ListTemplateSelector : DataTemplateSelector {
public DataTemplate GroupTemplate { get; set; }
public DataTemplate ItemTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
    GroupList<Person> list = item as GroupList<Person>;
    if (list != null && !list.IsLeaf)
        return GroupTemplate;
    return ItemTemplate;
}
}

Die GroupTemplate-Datenvorlage verweist auf den ListTemplateSelector in sich selbst. Aus diesem Grund habe ich sie so eingerichtet, wie ich sie eingerichtet habe. Es ist der einzige rekursive Hack, den ich zusammenstellen konnte. Aber das ist nicht das Problem, das ich habe.

Mein Problem ist, ich möchte von ItemTemplate zu GroupTemplate wechseln, wenn sich die IsLeaf-Eigenschaft ändert. Dies funktioniert wunderbar beim allerersten Mal, da die Eigenschaft beim ersten Mal gelesen wird. Sobald sich diese Eigenschaft ändert, wird der Vorlagenselektor nicht erneut angewendet. Jetzt könnte ich Trigger verwenden, um an den Wert zu binden und die Elementvorlage entsprechend festzulegen, aber ich muss in der Lage sein, für jedes Element eine andere Vorlage festzulegen, da sie sich möglicherweise in einem anderen Status befinden.

Sagen Sie zum Beispiel, ich habe eine Liste von Gruppen wie diese:

Gruppe 1: IsLeaf = false, also template = GroupTemplate

Gruppe 2: IsLeaf = true, also template = ItemTemplate

Gruppe 3: IsLeaf = false, also template = GroupTemplate

Und sobald die IsLeaf-Eigenschaft von Gruppe 1 auf true geändert wird, muss die Vorlage automatisch in ItemTemplate geändert werden.

BEARBEITEN

Hier ist meine vorübergehende Lösung. Gibt es einen besseren Weg, das zu tun?

<ItemsControl ItemsSource="{Binding Path=Groups}">
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <ContentControl Content="{Binding}">
            <ContentControl.Style>
                <Style TargetType="{x:Type ContentControl}">
                    <Setter Property="ContentTemplate" Value="{DynamicResource ItemTemplate}"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=IsLeaf}" Value="False">
                            <Setter Property="ContentTemplate" Value="{DynamicResource GroupTemplate}"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ContentControl.Style>
        </ContentControl>
    </DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>