У меня есть пользовательский элемент управления, который динамически встраивает ряд других элементов управления на основе аналогичных шаблонов данных.
В моем элементе управления есть модель представления с привязываемыми свойствами как для DataContext размещенного субэлемента управления, так и для ContentTemplate.Тем не менее, когда я запускаю шаблон, он хорошо связывается и инициализируется, но DataContext никогда не поднимается, даже с событием DataContextChanged.
<ContentControl Name="SessionControl1" DataContext="{Binding SessionItem1}" ContentTemplate="{Binding Source={StaticResource ViewModel},Path=Session1Template}" />
Теперь в качестве теста я взял один из переключаемых элементов управления, которые я хотел (AudioCard.xaml) и попытался использовать его в том же месте, например, так:
<local:AudioCard DataContext="{Binding SessionItem1}" />
Это прекрасно работает, элемент управления инициализируется так же, как в динамическом случае, и событие DataContextChanged запускается с правильной привязкой.Это заставляет меня думать, что привязка к DataContext в ContentControl не работает.
Два вопроса: 1) есть ли простой способ исправить это?
2) есть ли лучший способсделать это?
РЕДАКТИРОВАТЬ: Основываясь на первом ответе, я изменил код, чтобы выглядеть так:
<ContentControl Name="SessionControl1" Grid.Row="0" Grid.Column="0" ClipToBounds="False" Height="128" Width="128"
DataContext="{Binding SessionItem1}"
ContentTemplateSelector="{StaticResource ProximitySessionCardTemplateSelector}" />
Я вижу, как код входит в мой контентшаблонный селектор, но мой объект в селекторе пуст.Должен ли я быть привязанным к чему-то другому?