2009-02-19 8 views
13

Comment faire pour aligner le TextBlock dans ma barre d'état ci-dessous à droite?Comment faire pour aligner un TextBlock à droite?

Je l'ai dit à:

  • HorizontalAlignment = "droit"
  • TextAlignment = "droit"

mais le texte est toujours assis unobediently à gauche. Quoi d'autre dois-je dire?

<Window x:Class="TestEvents124.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" 
     MaxWidth="700" Width="700" 
     > 
    <DockPanel HorizontalAlignment="Stretch" Margin="0,0,0,0" Width="Auto"> 

     <StatusBar Width="Auto" Height="25" Background="#888" DockPanel.Dock="Bottom" HorizontalAlignment="Stretch"> 
      <TextBlock 
       Width="Auto" 
       Height="Auto" 
       Foreground="#fff" 
       Text="This is the footer." 
       HorizontalAlignment="Right" 
       TextAlignment="Right" 
       /> 
     </StatusBar> 

     <GroupBox DockPanel.Dock="Top" Height="Auto" Header="Main Content"> 
      <WrapPanel Width="Auto" Height="Auto"> 
       <TextBlock Width="Auto" Height="Auto" TextWrapping="Wrap" Padding="10"> 
       This is an example of the content, it will be swapped out here. 
       </TextBlock> 
      </WrapPanel> 
     </GroupBox> 

    </DockPanel> 

</Window> 

Répondre

16

J'ai eu un jeu avec votre code et a réussi à le faire paraître « droit » (sans jeu de mots) en utilisant un StatusBarItem plutôt que d'un TextBlock:

<StatusBar Width="Auto" Height="25" 
    Background="#888" DockPanel.Dock="Bottom" 
    HorizontalAlignment="Stretch" > 
    <StatusBarItem Foreground="#fff" 
     HorizontalContentAlignment="Right">This is the footer</StatusBarItem> 
</StatusBar> 

Je ne sais pas ce qui se passe avec le TextBlock - toute mon expérience dit qu'une combinaison de HorizontalContentAlignment et HorizontalAlignment (sur la StatusBar et le TextBlock) devrait atteindre ce que vous voulez. Quoi qu'il en soit, j'espère que StatusBarItem fonctionnera pour vous.

+0

Excellent, ne savait pas sur StatusBarItem, merci! –

+0

Deux éléments ne sont pas alignés. seul un élément unique est aligné à droite –

+0

StatusBar est-il le seul moyen d'aligner à droite du texte dans XAML? –

3
<StatusBar> 
    <StatusBar.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="*"/> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition Width="100"/> 
       </Grid.ColumnDefinitions> 
      </Grid> 
     </ItemsPanelTemplate> 
    </StatusBar.ItemsPanel> 
    <StatusBarItem Grid.Column="0"> 
     <TextBlock>something</TextBlock> 
    </StatusBarItem> 
    <Separator Grid.Column="1" /> 
    <StatusBarItem Grid.Column="2"> 
     <TextBlock>logged in</TextBlock> 
    </StatusBarItem> 
</StatusBar> 

Cet exemple ne gâchera pas votre séparateur. Basé sur un exemple tiré de http://kent-boogaart.com/blog/the-perfect-wpf-statusbar

Vous ne devriez pas mettre un séparateur dans un StatusBarItem, cela réduirait votre séparateur en un point.

+0

Le séparateur est représenté par un point, car il essaie de l'afficher horizontalement. Vous devez le faire pivoter http://stackoverflow.com/questions/2744627/wpf-separator-position – invalidusername

1

Pour tous ceux qui cherchent la réponse à la question dans le titre (pas nécessairement dans une barre d'état), j'ai trouvé un Label meilleur qu'un TextBlock pour avoir un contrôle sur l'alignement tout en restant sémantiquement correct.

Questions connexes