【问题标题】:Panel resizing behaviour面板调整大小行为
【发布时间】: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>

我确信有一个简单的解决方案 - 可能通过在其中一个项目中使用子面板 - 但我无法确切地了解如何。非常感谢任何帮助。

【问题讨论】:

    标签: wpf layout panel


    【解决方案1】:

    也许是这样?

    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition />
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*" MinWidth="350"/>
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <UniformGrid HorizontalAlignment="Stretch" Rows="1">  
           <TextBlock Name="TextLeft" Text="TextLeft" FontSize="40" Foreground="DarkOrange"/>  
           <TextBlock Name="TextMiddle" Text="TextMiddle" FontSize="40" HorizontalAlignment="Center" />  
      </UniformGrid>
      <TextBlock Grid.Column="1" HorizontalAlignment="Right" Text="TextRight" FontSize="40" Foreground="DarkOrange"/>  
    </Grid>   
    

    【讨论】:

    • 嗯不完全在那里 - 这给出了与我的第二个 xaml 块相同的行为(即调整大小行为正确但 MiddeText 不在可用空间中居中)。但我认为你的方法很好 - 应该能够将其转化为解决方案......以某种方式。
    • 坚持有回报!对 MinWidth 进行一些摆弄就可以了。非常感谢你在这方面的努力——虽然比我第一次困难得多(我猜这就是 WPF 的全部)。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2013-08-25
    • 2011-08-14
    • 2019-01-25
    • 2023-04-02
    相关资源
    最近更新 更多