2013-05-25 172 views
0

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

+0

每次调整标签大小以正确定位按钮时,您能否调用一个函数? – gunr2171

回答

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> 

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

+0

自从提出这个以来,你已经做了几次修改,我会给你几分钟来确保你确定:) – cost

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