J'ai une collection qui contient plusieurs types d'éléments qui héritent tous de la même interface. Ceci est lié à un ItemsControl. Le DataContext de la fenêtre est défini sur le ViewModel qui contient la collection.WPF MVVM ItemsControl avec plusieurs ViewModels en fonction du type d'objet
Ce que je voudrais faire est que chaque élément d'un type différent de la collection utilise un ViewModel différent. Donc, si mes templates dans itemscontrol sont configurés comme ci-dessous, j'aimerais que le premier modèle ait un DataContext de ViewModel1 et le second un DataContext de ViewModel2. Je ne peux pas définir le DataContext directement sur eux parce que ItemsControl définira le DataContext à l'élément.
Quelqu'un sait-il une solution à cela, ou une meilleure façon de le faire en utilisant MVVM?
<DataTemplate DataType="{x:Type Models:ItemType1}">
<Controls:MyControl Text="{Binding Body}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type Models:ItemType2}">
<Controls:MyControl2 Text="{Binding Body}"/>
</DataTemplate>