2012-02-20 106 views
0

請幫我編輯XAML,以便顯示分鐘TextBlock走到右上角。如何將WPF TextBlock綁定到右上角?

<StackPanel Orientation="Horizontal" > 
    <StackPanel Orientation="Horizontal" > 
     <TextBlock Name="UserNameTextBlock" Margin="0,0,8,0" VerticalAlignment="Bottom" FontSize="15" Text="{Binding Path=UserName}" FontWeight="Bold"></TextBlock> 
     <TextBlock FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Foreground="LightGray" >@</TextBlock> 
     <TextBlock FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Name="ScreenNameTextBlock" Text="{Binding Path=ScreenName}" Foreground="Gray" ></TextBlock> 
     <TextBlock FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Name="MinAgo" Text="{Binding Path=MinAgo}" Foreground="Gray" ></TextBlock>  
    </StackPanel> 
</StackPanel> 

所以應該像

enter image description here

+0

您可以嘗試Horizo​​ntalAllignment = right,但我懷疑它可以用於堆棧面板。 – Paparazzi 2012-02-20 17:09:52

回答

5

我會使用DockPanel。對於子節點,只需添加DockPanel.Dock屬性以指示您希望元素去的位置。最後一個子元素將自動填充剩餘區域。

<DockPanel> 
    <TextBlock DockPanel.Dock="Right" FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Name="MinAgo" Text="{Binding Path=MinAgo}" Foreground="Gray" ></TextBlock>  
    <StackPanel Orientation="Horizontal" > 
     <TextBlock Name="UserNameTextBlock" Margin="0,0,8,0" VerticalAlignment="Bottom" FontSize="15" Text="{Binding Path=UserName}" FontWeight="Bold"></TextBlock> 
     <TextBlock FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Foreground="LightGray" >@</TextBlock> 
     <TextBlock FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Name="ScreenNameTextBlock" Text="{Binding Path=ScreenName}" Foreground="Gray" ></TextBlock> 
    </StackPanel> 
</DockPanel> 
+0

'DockPanels'是一個窮人的'Grid'。 – 2012-02-20 17:13:34

+0

@ H.B。它完成了工作。 – 2013-03-31 16:10:03

+0

我個人很少使用DockPanels,因此我的答案如下涉及到網格。當然,它可以完成這項工作,但僅僅通過查看XAML就可以明確發生了什麼。 – 2014-01-20 11:28:27

3

不要使用StackPanel但與列Grid

+0

好的...將嘗試... – 2012-02-20 17:07:13

+2

@DmitryBoyko:在時間之前添加一個'*'大小的列,讓所有其他的'自動'。 – 2012-02-20 17:08:46

4

如果我這樣做,我會用一個網格,而不是水平堆疊面板:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <TextBlock Grid.Column="0" Name="UserNameTextBlock" Margin="0,0,8,0" VerticalAlignment="Bottom" FontSize="15" Text="{Binding Path=UserName}" FontWeight="Bold"></TextBlock> 
    <TextBlock Grid.Column="1" FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Foreground="LightGray" >@</TextBlock> 
    <TextBlock Grid.Column="2" FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Name="ScreenNameTextBlock" Text="{Binding Path=ScreenName}" Foreground="Gray" ></TextBlock> 
    <TextBlock Grid.Column="4" FontSize="13" VerticalAlignment="Bottom" Padding="0,0,0,1" Name="MinAgo" Text="{Binding Path=MinAgo}" Foreground="Gray" ></TextBlock> 
</Grid> 

注意在第3列的*,這意味着列將使用所有可用空間,第2欄後,除了第4列需要什麼。