【问题标题】:XAML DockPanel won't stretch two ButtonsXAML DockPanel 不会拉伸两个按钮
【发布时间】:2018-07-21 10:32:04
【问题描述】:

我在停靠面板中添加了两个按钮。第一个只占用足够的空间来容纳文本“保存”,第二个拉伸以填充单元格网格提供的其余区域。因此,“保存”按钮的宽度很小,而“取消”按钮的宽度很大。

如何让它们均匀地填充空间?

<DockPanel Grid.Row="4" Grid.Column="1" >  
    <Button Content="Save"                           
            Margin="5"></Button>
    <Button Content="Cancel"                          
            Margin="5"></Button>
</DockPanel>

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    您应该为此使用带有* 列的Grid

    <Grid>
       <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*" />
          <ColumnDefinition Width="*" />
       </Grid.ColumnDefinitions>
        <Button HorizontalAlignment="Stretch" Content="Save"                           
                Margin="5"></Button>
    
        <Button Grid.Column="1" HorizontalAlignment="Stretch" Content="Cancel"                          
                Margin="5"></Button>
    
    </Grid>
    

    【讨论】:

    • 停靠面板已经在网格中。在第 1 列位置,我将其定义为 Width="*"
    • 而且,第二个按钮正在伸展以占据整个房间。如果我删除第二个按钮,第一个按钮会伸展以占据所有房间。当我添加两个按钮时会出现问题。
    • 您可以放置​​第二个 Grid 来代替 DockPanel
    • 在 Grid 中拥有 Grid 不是问题 :-)。 DockPanel 只是不适合创建相同大小的列,而 Grid 非常适合此
    • UniformGrid 会更简单