【发布时间】:2012-05-27 08:36:10
【问题描述】:
我需要一个面板,其中包含 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>
我确信有一个简单的解决方案 - 可能通过在其中一个项目中使用子面板 - 但我无法确切地了解如何。非常感谢任何帮助。
【问题讨论】: