使两个按钮的宽度相等

Posted

技术标签:

【中文标题】使两个按钮的宽度相等【英文标题】:Make Two Buttons Have Equal Width 【发布时间】:2012-12-15 21:16:51 【问题描述】:

我有以下:

<DockPanel Height="25" HorizontalAlignment="Stretch">
    <Button Content="Add" x:Name="bAdd" DockPanel.Dock="Left" />
    <Button Content="Remove" x:Name="bRemove" DockPanel.Dock="Right" />
</DockPanel>

有人可以建议我如何在不手动设置按钮的Width 属性的情况下吗?

【问题讨论】:

不要以为不设置宽度就可以设置宽度。 为什么你不想使用 Width 属性?有问题吗? 用户可以调整窗口大小,我希望按钮也可以调整大小。 WPF buttons same/recommended width的可能重复 【参考方案1】:

如果您绝对不想设置 Width 属性,您可以使用 Grid

<Grid Height="25" HorizontalAlignment="Stretch">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Button Grid.Column="0" Content="Add" x:Name="bAdd" />
    <Button Grid.Column="1" Content="Remove" x:Name="bRemove" />
</Grid>

这样他们都将拥有相同的Width

【讨论】:

当我重新加载并看到这个时,我正要点击“发布答案” - 这是迄今为止动态但等宽控件的最简单方法。 我支持这个。我通常做的就是这个。 经典的 *** 情况:即将发布答案,有人刚刚做了:) 在更相关的说明中,宽度和高度的 * 值是让 WPF 很棒的事情之一。我现在不能再使用 Winforms了!【参考方案2】:
<UniformGrid Columns="2">
 <Button Content="Ok" Grid.Column="0"/>
 <Button Content="Cancel" Grid.Column="1"/>
</UniformGrid>

【讨论】:

【参考方案3】:

除了@Amir 的回答,您还可以通过绑定可见性来动态控制按钮的数量。

<UniformGrid Rows="1">
 <Button Content="Ok" Visiblity="Binding IsShowOkayButton, Converter=..."/>
 <Button Content="Cancel" Visiblity="Binding IsShowCancelButton, Converter=..."/>
</UniformGrid>

与枚举一起使用: (假设 ConfirmType 和 IsShowCancelButton 在同一个 ViewModel 中)

public enum ConfirmType  Confirm, ConfirmOrCancel 

public ConfirmType ConfirmType  get => _ConfirmType; 
            set 
                switch (_ConfirmType)
                
                    case ConfirmType.Confirm:
                        IsShowCancelButton = false;
                        break;
                    case ConfirmType.ConfirmOrCancel:
                        IsShowCancelButton = true;
                        break;
                
                // Your RaisePropertyChanged code here
            
        

【讨论】:

以上是关于使两个按钮的宽度相等的主要内容,如果未能解决你的问题,请参考以下文章

使弹性项目在一行中具有相等的宽度

UIScrollView 中宽度和高度相等的动态按钮

如何在 Swift 中使用 SnapKit 使 UIView 具有相等的宽度和高度?

为按钮提供相等宽度约束时,自动布局设置不正确

使 2 个 JButton 大小相等

iOS自动布局两个UIView具有相等的宽度