我如何使按钮移动,因为它旁边的标签改变宽度

本文关键字:标签 改变 何使 按钮 移动 因为 | 更新日期: 2023-09-27 18:15:15

我觉得这是我可以用网格(或者可能是水平堆栈面板)做的事情,但我想知道是否有更简单的方法来做到这一点。这是在Silverlight页面上,尽管我假设WPF的解决方案也会工作得很好。在顶部,我有一个位于页面中心的标签,用于显示当前页面的标题。这个标签的左边是一个按钮。因为标签的文本可以是任何东西,当它仍然居中时,宽度可以是400到50像素。是否有一个简单的方法,使按钮始终是20像素的标签的左手边的左边?

我如何使按钮移动,因为它旁边的标签改变宽度

以下XAML是这样做的:

<StackPanel>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Button Grid.Column="0" Content="Button"
                HorizontalAlignment="Right" Margin="0,0,20,0"/>
        <Label Grid.Column="1" Content="Some Text in a Label"/>
    </Grid>
</StackPanel>

当标签的宽度改变时,网格将重新定位按钮。不需要经常调用更新方法

你应该能够调用一个函数来定位你的按钮。在每次调整标签大小后调用此方法。

public void RepositionButton(int horizontalSpacing)
{
    int newXPos = lblLabel.Position.X - btnButton.Width - horizontalSpacing;
    int newYPos = lblLabel.Position.Y;
    btnButton.Position = new Point(newXPos, newYPos);
}

如果需要垂直居中,您可能需要修改Y位置的数学。