2009-02-19 15 views
13

Come si ottiene TextBlock nella barra di stato sottostante per allineare a destra?Come ottenere un TextBlock per allineare a destra?

Ho detto a:

  • HorizontalAlignment = "right"
  • TextAlignment = "right"

ma il testo è ancora seduto unobediently sulla sinistra. Cos'altro ho da 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> 

risposta

16

Ho avuto un gioco con il codice e sono riusciti a far sembrare "giusto" (no pun intended) utilizzando uno StatusBarItem piuttosto che 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> 

Non sei sicuro di quello che sta succedendo con TextBlock - tutta la mia esperienza dice che una combinazione di HorizontalContentAlignment e HorizontalAlignment (sia su StatusBar che su TextBlock) dovrebbe ottenere ciò che si desidera. Comunque, spero che StatusBarItem funzioni per te.

+0

Eccellente, non sapeva di StatusBarItem, grazie! –

+0

Due elementi non si allineano. solo un singolo elemento è allineato a destra –

+0

StatusBar è l'unico modo per allineare a destra il testo in 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> 

Questo esempio non rovinerà il tuo Separatore. Basato su un esempio tratto da http://kent-boogaart.com/blog/the-perfect-wpf-statusbar

Non si dovrebbe mettere un separatore in un oggetto StatusBar, esso ridurrà il separatore a un punto.

+0

il separatore viene mostrato come un punto, perché tenta di visualizzarlo in orizzontale. Devi ruotarlo http://stackoverflow.com/questions/2744627/wpf-separator-position – invalidusername

1

Per chi è alla ricerca di una risposta alla domanda nel titolo (non necessariamente per l'uso in una barra di stato), ho trovato un etichetta di essere migliore di un TextBlock per avere il controllo su allineamento e ancora sentire semanticamente corretto.

Problemi correlati