WPF如何使X个按钮右对齐?

4

我正在尝试将按钮对齐到DockPanel的右侧,但是基于特定条件我会隐藏或显示按钮。我需要了解如何根据已显示内容进行右对齐。目前我使用的代码如下:

    <DockPanel HorizontalAlignment="Stretch" Height="34" Margin="0,0,2,35" VerticalAlignment="Bottom">
        <Button DockPanel.Dock="Right" Height="23" x:Name="btnOne" Click="btnOne_Click" Margin="0,0,5,5" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="Auto">
            <TextBlock x:Name="txtBtnOneText" />
        </Button>
        <Button DockPanel.Dock="Right" Height="23" Width="Auto" x:Name="btnTwo" Visibility="Hidden" Click="btnTwo_Click" HorizontalAlignment="Right" Margin="0,0,5,5" VerticalAlignment="Bottom">
            <TextBlock x:Name="txtBtnTwoText" />
        </Button>
    </DockPanel>

当我只显示按钮btnOne时,我希望它靠右对齐;当我只显示btnTwo时,我希望它靠右对齐;或者当我同时显示它们两个时,我希望btnOne在最右边,btnTwo在btnOne的左侧5像素处。
谢谢!
3个回答

4

那您遇到了什么问题?我会使用一个简单的StackPanel来完成这个任务:

<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
    <Button>One</Button>
    <Button Margin="3 0 0 0">Two</Button>
</StackPanel>

嘿,肯特,感谢回复。我遇到了一个问题,如果只显示btnTwo,则需要用btnOne的位置替换它,反之亦然。然后,如果两个都显示,则btnTwo应该有5像素的右边距。 - Andrew Sehr

4

不要使用dockpanel,尝试使用stackpanel,像这样:

        <StackPanel Grid.Row="0" Orientation="Horizontal">
            <Button x:Name="btn1" Content="btn1" Height="34" />
            <Button x:Name="btn2" Margin="5,0,0,0" Content="btn2" Height="34" />
        </StackPanel>

当您想要隐藏一个按钮并且不占用其保留空间时,只需将该按钮的可见性设置为collapsed而不是hidden。如果将可见性设置为hidden,则它不会在UI上显示,但仍将占用其保留空间。


0

对我来说,使用网格比堆栈面板更有效。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*" />
        <ColumnDefinition Width="32" />
    </Grid.ColumnDefinitions>
    <TextBlock Name="TextBlock" Grid.Column="0" Text="This is a text block" B TextAlignment="Center" />
    <Button x:Name="CloseButton" Grid.Column="1" FontSize="12" Content="X" Click="CloseButton_Click" />
</Grid>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接