我需要一个面板,其中有 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”吃掉,如下所示:
注意我尝试在 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>
我确信有一个简单的解决方案 - 也许通过在其中一个项目中使用子面板 - 但我无法确切地了解如何。非常感谢任何帮助。