3 つの項目が水平に配置されたパネルが必要です。私はこれを得ることができます:
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Left" Text="TextLeft" FontSize="40" Foreground="DarkOrange"/>
<TextBlock DockPanel.Dock="Right" Text="TextRight" FontSize="40" Foreground="DarkOrange"/>
<TextBlock Text="TextMiddle" FontSize="40" HorizontalAlignment="Center"/>
</DockPanel>
しかし、以下に示すように、幅がアイテム幅の合計よりも小さい場合、「TextRight」が「TextMiddle」ではなく「TextRight」になるようにしたいと思います。
注: TextMiddle に MinWidth を追加しようとしましたが、動作は変わりません。TextMiddle は LastChildFill="True" DockPanel の最後の子であるためです。
以下の XAMLでは、サイズ変更時に正しい動作が得られます (スペースが限られている場合は TextRight が食い込まれます)が、十分な幅がある場合、「TextMiddle」は使用可能なスペースの中央に配置されません。
<DockPanel LastChildFill="False" >
<TextBlock DockPanel.Dock="Left" Text="TextLeft" FontSize="40" Foreground="DarkOrange"/>
<TextBlock DockPanel.Dock="Left" Text="TextMiddle" FontSize="40" HorizontalAlignment="Center" />
<TextBlock DockPanel.Dock="Right" Text="TextRight" FontSize="40" Foreground="DarkOrange"/>
</DockPanel>
おそらくアイテムの1つでサブパネルを使用することで、これには簡単な解決策があると確信していますが、正確にどのように理解することができません. どんな助けでも大歓迎です。