3

我有以下内容:

<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手动设置按钮属性的情况下使两个按钮的宽度相等吗?

4

3 回答 3

9

如果您绝对不想设置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方式

于 2012-12-31T21:42:34.820 回答
7
<UniformGrid Columns="2">
 <Button Content="Ok" Grid.Column="0"/>
 <Button Content="Cancel" Grid.Column="1"/>
</UniformGrid>
于 2016-04-06T12:31:29.187 回答
0

除了@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
            }
        }
于 2021-11-10T01:41:29.840 回答