Как связать TabControl с ObservableCollection в XAML - PullRequest
0 голосов
/ 14 ноября 2009

У меня есть следующая строка кода в моем классе code-behind.

TabControl.ItemsSource = ((MainWindowViewModel)DataContext).TabItemViewModels;

Я хотел бы переместить это в файл XAML.

Вкратце,

  • Существует класс MainWindow, представляющий главное окно.
  • В главном окне находится TabControl.
  • Существует 2 модели представления, называемые MainWindowViewModel и TabItemViewModel.
  • MainWindowViewModel имеет наблюдаемую коллекцию классов TabItemViewModel.
  • MainWindowViewModel - это класс модели представления для главного окна.
  • TabItemViewModel - это класс модели представления для каждой отдельной вкладки в TabControl в главном окне.
  • Свойство DataContext класса MainWindow установлено на экземпляр класса MainWindowViewModel, созданный в XAML.

Я хочу связать свойство TabItemViewModels класса MainWindowViewModel со свойством ItemSources элемента TabControl.

Я ищу не только строку кода, но и некоторые указатели на синтаксис для привязок, так как я полностью теряюсь в этом, и это кажется довольно важным для работы с XAML.

1 Ответ

0 голосов
/ 14 ноября 2009

Первая строка кода, которую вы не ищете:

<TabControl ItemsSource="{Binding TabItemViewModels}" ... />

Как это связано с синтаксисом для привязок? Привязка без Source, ElementName или RelativeSource автоматически ссылается на DataContext. В вашем случае MainWindow.DataContext - это MainWindowViewModel, который имеет свойство TabItemViewModels. (DataContext распространяется вниз по визуальному дереву, поэтому TabControl наследует тот же DataContext, что и содержащее MainWindow.) Таким образом, вы можете просто ссылаться на это свойство по имени.

Для получения дополнительной информации и синтаксиса см. Обзор привязки данных , Обзор источников привязки и Обзор объявлений привязки в MSDN.

...