使两个按钮的宽度相等
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
【讨论】:
以上是关于使两个按钮的宽度相等的主要内容,如果未能解决你的问题,请参考以下文章