Пост stackoverflow прекрасно отвечает на мой вопрос.
я есть собственный ControlTemplate для WPF TabControl, который добавляет кнопки в левой и правой части заголовка TabItem. На данный момент это не именованная часть, так как команды кнопок связаны в XAML-шаблонах ControlTemplates и не должны отображаться вне ControlTemplate.
Это нормально работает для кнопки, но что, если я хочу добавитьсодержание с левой (или правой) стороны TabItemHeaders, которые могут быть связаны вне ControlTemplate, чтобы мой TabControl стал более гибким?
Моя идея состояла в том, чтобы создать подкласс TabControl и иметь две именованные части в ControlTemplate и представить их как свойства нового элемента управления;CustomTabControl.LeftContentArea а такжеCustomTabControl.RightContentArea соответственно. Каждая именованная часть представляет собой ContentPresenter, и каждое свойство ContentPresenters предоставляется вышеуказанными свойствами.
Однако, когда я попробовал это, я не смог поместить контент в левую и правую области контента.
Изменить: Просто чтобы быть ясно, я включил изображение. Красные прямоугольники показывают, где я хочу разместить дополнительный контент.
Обновление: ниже приведен скриншот прогресса, которого я добился до сих пор, надеюсь, это поможет объяснить мою проблему немного подробнее.
На снимке экрана показан мой пользовательский элемент управления вкладками с двумя пустыми вкладками и тремя кнопками, которые в настоящее время находятся справа отTabItem область заголовка В настоящее время кнопки определены вTabControls обычайControlTemplate И.Е. Существует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>