我觉得这是我可以用网格(或者可能是水平堆栈面板)做的事情,但我想知道是否有更简单的方法来做到这一点。这是在Silverlight页面上,虽然我假设WPF的解决方案也可以正常工作。在顶部,我有一个标签,以页面为中心,显示当前页面的标题。这个标签的左边是一个按钮。由于标签的文本可以是任何内容,因此在保持居中的同时,它可以是400像素到50像素宽。是否有一种简单的方法可以使按钮始终位于标签左边缘的左侧20个像素处?
答案 0 :(得分: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>
只要标签的宽度发生变化,网格就会重新定位按钮。不需要经常调用的更新方法。
答案 1 :(得分: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位置的数学运算。