Не удается получить доступ к свойствам datacontext

#binding

#привязка

Вопрос:

У меня есть сетка в пользовательском элементе управления, который размещен в окне, имеющем 2 коллекции.

Я ищу способ добраться до коллекции 2 из моей сетки.

Я уже попробовал пару вещей:

 ItemsSource="{Binding DataContext.Bicycles, RelativeSource={RelativeSource FindAncestor,
 AncestorType={x:Type CollectionContainer}}}" />
  

и

 <ComboBox Grid.Column="1" Grid.Row="2" ItemsSource="{Binding RelativeSource=
{RelativeSource FindAncestor, AncestorType=Window, AncestorLevel=1}, 
Path=DataContext.Bicycles}" DisplayMemberPath="Height" />
  

и

 <ComboBox Grid.Column="1" Grid.Row="2" ItemsSource="{Binding RelativeSource=
{RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.Companies}" 
/>
  

Но каждый раз, когда мой combobox заканчивается пустым

Ответ №1:

Когда вы запускаете свое приложение, вы должны посмотреть в своем окне «Вывод», которое сообщит вам о возникающих ошибках привязки. Таким образом, это даст вам представление о том, что вы делаете неправильно.

Похоже, вам не нужен префикс DataContext. datacontext дочернего элемента управления по умолчанию является datacontext его родительского элемента, если не указано иное. Таким образом, если DataContext окна является некоторой ViewModel, UserControl и его дочерние элементы управления будут иметь один и тот же datacontext.

Поэтому вам, вероятно, нужно будет сделать только это:

 <ComboBox Grid.Column="1" Grid.Row="2" ItemsSource="{Binding Companies}" />
  

Комментарии:

1. Нет, фактическая ошибка заключалась в том, что я отключил x: Type Window , чего не было, поскольку использовалась Prism и все было пользовательским управлением. Это и тот факт, что я должен был подняться на два уровня.