У меня есть собственный ControlTemplate для WPF TabControl, который добавляет кнопки в левую и правую часть заголовка TabItem.На данный момент это не именованная часть, так как команды кнопок связаны в XAML ControlTemplates и не должны отображаться за пределами ControlTemplate.
Это нормально работает для кнопки, но что, если я хочу добавить содержимое слева (или справа) от TabItemHeaders, которые могут быть связаны вне ControlTemplate, так что мой TabControl становится более гибким?
Моя идея состояла в том, чтобы создать подкласс TabControl и иметьдве именованные части в ControlTemplate и представляют их как свойства нового элемента управления; CustomTabControl.LeftContentArea и CustomTabControl.RightContentArea соответственно.Каждая именованная часть является ContentPresenter, и каждое свойство ContentPresenters доступно для указанных выше свойств.
Однако, когда я попытался это сделать, мне не удалось поместить контент в левую и правую области контента.
Редактировать: просто чтобы прояснить, я включил изображение.Красные прямоугольники показывают, где я хочу разместить дополнительный контент.
Обновление: ниже приведен снимок экрана с прогрессом, которого я добился до сих пор, надеюсь, это поможетобъясните мою проблему немного подробнее.
На снимке экрана показан мой пользовательский элемент управления вкладками с двумя пустыми вкладками и тремя кнопками, которые в настоящее время находятся справа от области заголовка TabItem .Кнопки в настоящее время определены в TabControls custom ControlTemplate IE есть ColumnDefinition в сетке ControlTemplates , которая содержит StackPanel, на котором размещены 3 кнопки.
Мне нужен способ, позволяющий потребителю элемента управления вкладками решать, какой контент находится в области рядом с вкладками.,Например, пользователь должен иметь возможность сделать что-то вроде этого:
<local:CustomTabControl>
<local:CustomTabControl.RightContentArea>
<!-- This can be changed to ANY content that the user wants -->
<StackPanel Orientation="Horizontal">
<Button Content="Test" />
<Button Content="Test" />
<Button Content="Test" />
</StackPanel>
</local:CustomTabControl.RightContentArea>
<!-- TabItems are added as normal -->
<TabItem Header="Tab One" />
<TabItem Header="Tab Two" />
</local:CustomTabControl>