2009-11-14 2 views
0

У меня есть следующая строка кода в моем классе кода.Как связать TabControl с ObservableCollection в XAML

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

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

Вкратце,

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

Что я хочу сделать, это привязать свойство TabItemViewModels класса MainWindowViewModel к свойству ItemSources TabControl.

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

ответ

0

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

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

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

Для получения дополнительной информации и синтаксиса см. Data Binding Overview, Binding Sources Overview и Binding Declarations Overview в MSDN.

Смежные вопросы