Пост 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>

Ответы на вопрос(3)

Ваш ответ на вопрос