WPF HiercharchicalDataTemplate.DataType: Wie soll auf Interfaces reagiert werden?

Proble

Ich habe eine Sammlung vonIThings und ich möchte ein @ erstellHierarchicalDataTemplate Für einTreeView. Das unkomplizierteDataType={x:Type local:IThing} funktioniert natürlich nicht, wahrscheinlich, weil die WPF-Ersteller mit den möglichen Mehrdeutigkeiten nicht umgehen wollten.

Da dies sollte behandelnIThings kommt nicht in Frage, auf die implementierende Klasse von @s aus verschiedenen Quellen gleichzeitig zu verweisen.

Aktuelle Lösung

Für jetzt benutze ich ein ViewModel, das IThing durch eine konkrete Implementierung ersetzt:

public interface IThing {
    string SomeString { get; }
    ObservableCollection<IThing> SomeThings { get; }
    // many more stuff
}

public class IThingViewModel
{
     public IThing Thing { get; }
     public IThingViewModel(IThing it) { this.Thing = it; }
}

<!-- is never applied -->
<HierarchicalDataTemplate DataType="{x:Type local:IThing}">

<!-- is applied, but looks strange -->
<HierarchicalDataTemplate
    DataType="{x:Type local:IThingViewModel}"
    ItemsSource="{Binding Thing.SomeThings}">
    <TextBox Text="{Binding Thing.SomeString}"/>
</HierarchicalDataTemplate>
Frag

Gibt es einen besseren Weg (d. H. Keinen Proxy)?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage