Контекст важен, если я использую ContentControl и привязываю его содержимое к SelectedItem
следующим образом:
<ContentControl Content="{Binding SelectedItem, ElementName=mylistbox}">
Я могу привязать идентификатор выбранного элемента в шаблоне данных следующим образом:
<ContentControl.ContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding ID}" />
</DataTemplate>
</ContentControl.ContentTemplate>
Это потому, что установка Content
для ContentControl
автоматически также устанавливает DataContext, и эта привязка относится к DataContext
, поскольку ни один источник (ElementName
, RelativeSource
, Source
) не имеет было указано.
Я не знаю, как ваш UserControl
обрабатывает контекст, если DataContext
не затронут, такие привязки не будут работать. Вам нужно будет связать непосредственно тогда:
<uc:MyDetailsView Data="{Binding SelectedItem, ElementName=mylistbox}">
<!-- ... -->
<TextBlock Text="{Binding SelectedItem.ID, ElementName=mylistbox}" />
Это, конечно, отрицательно сказывается на назначении привязки для самого UserControl. Но если вы не разместите какой-либо соответствующий код, довольно сложно сказать, что не так.
Также проверьте окно вывода в VisualStudio, там будут отображаться ошибки привязки и могут предоставить ценную информацию о том, что пошло не так.