我想在 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 工具中完成此操作),则标题将按照我的需要呈现。但是如何从代码中更改它?
我尝试使用正确的 HorizontalAlignment 值将 ContentPresenter 样式添加到 Expander 资源,但不幸的是它不起作用。可能 ContentPresenter 应用了一些自定义样式,这就是它没有抓住我的样式的原因。我试过这样:
<Expander.Resources>
<Converters:TodoTypeToHeaderTextConverter x:Key="TodoTypeToHeaderTextConverter" />
<Style TargetType="ContentPresenter">
<Setter Property="HorizontalAlignment" Value="Stretch" />
</Style>
</Expander.Resources>
那我还能尝试什么?