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>
それで、他に何を試すことができますか?