Я хочу иметь собственный заголовок в элементе управления Expander. Я хочу иметь текст заголовка с выравниванием по левому краю и изображение с выравниванием по правому краю:
<Expander>
<Expander.Header>
<DockPanel LastChildFill="True" HorizontalAlignment="Stretch">
<TextBlock DockPanel.Dock="Left" Text="Some Header Text"/>
<Image DockPanel.Dock="Right" HorizontalAlignment="Right" />
</DockPanel>
</Expander.Header>
<StackPanel >
<ItemsPresenter />
</StackPanel>
</Expander>
К сожалению, заголовок отображается внутри элемента, который по умолчанию не растягивается по горизонтали. Этот элемент представляет собой элемент управления ContentPresenter, и по умолчанию он не растягивается, поскольку его значение HorisontalAlign равно Left. Если я изменю его на Stretch (я сделал это в инструменте Snoop), то заголовок будет отображаться так, как я этого хочу. Но как мне изменить это из кода?
Я попытался добавить стиль ContentPresenter к ресурсам Expander с правильным значением HorizontalAlignment, но, к сожалению, это не сработало. Вероятно, к ContentPresenter применен какой-то пользовательский стиль, и поэтому он не ухватился за мой стиль. Я пробовал это так:
<Expander.Resources>
<Converters:TodoTypeToHeaderTextConverter x:Key="TodoTypeToHeaderTextConverter" />
<Style TargetType="ContentPresenter">
<Setter Property="HorizontalAlignment" Value="Stretch" />
</Style>
</Expander.Resources>
Так что еще я могу попробовать?