У меня есть приложение WPF, которое я пытаюсь динамически добавлять элементы в tabcontrol.У меня есть список пунктов меню, которые должны быть привязаны к элементам tabcontrol.Единственная проблема заключается в том, что TabControl.Items не уведомляет других о добавлении элементов.Я проверил это, связав вместо этого TabControl.Items.Count и получая вызовы к конвертеру (но переданное значение - это число, а не что-то полезное).Вот соответствующий код, который не получает привязку данных должным образом, потому что Items не вызывает обновления:
<MenuItem ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}, Path=Items, Converter={StaticResource TabControlItemConverter}}">
Этот XAML MenuItem находится внутри ControlTemplate для TabControl.Со статическими элементами, то есть элементами, которые уже определены в TabControl, этот код работает отлично.Но у меня есть TabControl, который добавляет элементы во время выполнения и не может обновить эту привязку.Кто-нибудь добавил какое-либо свойство в TabControl, которое может связываться с коллекцией Items?
Изменить для фоновой информации TabControl, к которому добавлены элементы, является регионом (это приложение Prism).Вот соответствующий XAML
<TabControl cal:RegionManager.RegionName="{x:Static local:LocalRegionNames.SelectedItemRegion}" >
<TabControl.Resources>
<Style TargetType="TabItem" BasedOn="{StaticResource TabItemStyle}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Style="{StaticResource tabItemImage}" Height="20" />
<TextBlock Text="{Binding Content.DataContext.TabHeader, RelativeSource={RelativeSource AncestorType=TabItem}}" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
</TabControl>
Соответствующий код для добавления вида в регион находится здесь:
ProjectDetailView view = new ProjectDetailView();
ProjectDetailViewModel viewModel = new ProjectDetailViewModel();
viewModel.CurrentProject = project;
view.DataContext = viewModel;
IRegionManager retManager = RegionManager.Regions[LocalRegionNames.SelectedItemRegion].Add(view, null, true);
RegionManager.Regions[LocalRegionNames.SelectedItemRegion].Activate(view);
Все это работает нормально ... представления добавляются, вкладка управлениядобавляет элементы, и появляются виды.Но свойство Items на tabcontrol никогда не передает изменения в свою коллекцию.