У меня есть коллекция, которая содержит несколько типов элементов, которые все наследуются от одного и того же интерфейса. Это связано с ItemsControl. DataContext окна установлен на ViewModel, который содержит коллекцию.
То, что я хотел бы сделать, - это чтобы каждый элемент разного типа в коллекции использовал разные ViewModel.
Так что, если мои шаблоны в элементе управления настроены, как показано ниже, я бы хотел, чтобы первый шаблон имел DataContext из ViewModel1, а второй имел DataContext из ViewModel2. Я не могу установить DataContext непосредственно на них, потому что ItemsControl установит DataContext для элемента.
Кто-нибудь знает решение этой проблемы или лучший способ сделать это с помощью 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>