0

У меня имеется ItemsControl

<ItemsControl ItemsSource="{Binding ItemsCollection}"> <!-- если общий источник данных -->
   <ItemsControl.Resources>
      <DataTemplate DataType="{x:Type local:ViewModel_1}">
         <!--1-ый контрол -->
      </DataTemplate>
      <DataTemplate DataType="{x:Type local:ViewModel_2}">
         <!--2-ой контрол -->
      </DataTemplate>
      <DataTemplate DataType="{x:Type local:ViewModel_3}">
         <!--3-ий контрол -->
      </DataTemplate>
   </ItemsControl.Resources>
</ItemsControl>

MainViewModel которая должна хранить коллекцию контролов

class MainViewModel : ViewModel
    {
        public ObservableCollection<ViewModel_1> ItemsCollection_1 { get; set; }
        public ObservableCollection<ViewModel_2> ItemsCollection_2 { get; set; }
        public ObservableCollection<ViewModel_3> ItemsCollection_3 { get; set; }
    public MainViewModel()
    {
        ItemsCollection_1 = new ObservableCollection&lt;ViewModel_1&gt;();
        ItemsCollection_2 = new ObservableCollection&lt;ViewModel_2&gt;();
        ItemsCollection_3 = new ObservableCollection&lt;ViewModel_3&gt;();
    }

}

Как сделать, чтобы 3 разные ViewModel можно было хранить в одной коллекции, или привязать к ItemsControl 3 источника данных

aepot
  • 49,560
  • 1
    Делаете интерфейс, ну или абстрактный класс (если есть общая логика), делаете коллекцию этих интерфейсов, каждый тип наследуете от интерфейса, ну и заполняете коллекцию. Как бы, простое наследование... – EvgeniyZ Jul 05 '22 at 10:47
  • 1
    наследование же https://ru.stackoverflow.com/a/1266479/373567 – aepot Jul 05 '22 at 11:17

0 Answers0