У меня есть TabControl
, привязанный к Dictionary
, и пользовательский элемент управления имеет значение ContentTemplate
.У пользовательского элемента управления есть пользовательское свойство зависимости Schedules
, и оно DataContext
связано с ViewModel
. Вот как это выглядит:
Основной элемент управления:
<TabControl Grid.Row="1" ItemsSource="{Binding Schedules}">
<TabControl.ContentTemplate>
<DataTemplate>
<TabControl >
<TabItem Header="Scheduled flights">
<views:MyViewer Schedules="{Binding Value}"/>
</TabItem>
</TabControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
ВMyViewer
, у меня также есть DataGrid
, который я хочу связать с Schedules
, переданным от TabControl
, но в то же время MyViewer
имеет назначенный ViewModel
.Вот как это выглядит в MyViewer
:
<DataGrid Grid.Row="1" ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Path=Schedules}" AutoGenerateColumns="False" >
Пока это не работает, когда загружено MyViewer
Schedules
свойство равно null
.Но даже если это сработает, я бы хотел, чтобы расписания передавались в ViewModel
, а не в код.Одна идея состоит в том, чтобы заполнить словарь с ViewModels
из MyViewer
, но я не хочу этого делать, я только хочу, чтобы главный элемент управления знал о деталях MyViewer
.Таким образом, есть какая-нибудь чистая идея, чтобы решить эту проблему?
РЕДАКТИРОВАТЬ: Предложение выше работает после изменения на ObservableDictionary
, но остается вопрос, как получить Schedules
в ViewModel