У меня есть TabControl, который в настоящее время отображает, как я хочу, используя следующее:
<TabControl Grid.Row="1" Background="{x:Null}" ItemsSource="{Binding TabPanels}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Content.DataContext.BreadcrumbEnd}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControl Content="{Binding Content}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
Показывает правильный заголовок на каждой вкладке и содержимое внутри. Источник элементов привязан к ObservableCollection, где ContentAreaHolder имеет следующий вид:
public ContentAreaHolder(UserControl content)
{
this.Content = content;
}
private UserControl _Content;
public UserControl Content
{
get
{
return _Content;
}
set
{
_Content = value;
OnPropertyChanged("Content");
}
}
Это выглядит очень грязно и совершенно не нужно. Однако я начал с ObservableCollection и не смог получить тот же эффект. Я использовал слегка измененный xaml:
<TabControl Grid.Row="1" Background="{x:Null}" ItemsSource="{Binding TabPanels}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.BreadcrumbEnd}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControl Content="{Binding .}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
и содержимое отображается правильно, но заголовок остается пустым.
Я попытался установить заголовок через DisplayMemberPath, без привязки, но просто установил его на DataContext.BreadcrumbEnd
безрезультатно.
Почему мой заголовок не отображается правильно?