0

我觉得这是我可以用网格(或者水平堆栈面板)做的事情,但我想知道是否有更简单的方法来做到这一点。这是在 Silverlight 页面上,但我认为 WPF 的解决方案也可以正常工作。在顶部我有一个标签,以页面为中心,显示当前页面的标题。此标签的左侧是一个按钮。由于标签的文本可以是任何东西,它虽然仍然居中,但可以是 400 像素到 50 像素宽。有没有一种简单的方法可以使按钮始终位于标签左边缘左侧 20 像素处?

4

2 回答 2

4

以下 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>

只要标签的宽度发生变化,网格就会重新定位按钮。不需要经常调用的更新方法。

于 2013-05-25T22:17:47.017 回答
2

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

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 位置的数学运算。

于 2013-05-25T21:32:40.237 回答