2009-02-19 8 views
13

¿Cómo obtengo el TextBlock en mi barra de estado a continuación para alinearlo a la derecha?¿Cómo hacer que un TextBlock se alinee a la derecha?

Se lo he dicho a:

  • HorizontalAlignment = "derecha"
  • TextAlignment = "derecha"

pero el texto está todavía sentado unobediently a la izquierda. ¿Qué más tengo que decir?

<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> 

Respuesta

16

que he tenido un juego con su código y logró hacer que se vea "derecho" (sin doble sentido) mediante el uso de un StatusBarItem en lugar de 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> 

No está seguro de lo que está pasando con TextBlock: toda mi experiencia dice que alguna combinación de HorizontalContentAlignment y HorizontalAlignment (tanto en StatusBar como en TextBlock) debería lograr lo que desea. De todos modos, es de esperar que StatusBarItem funcione para usted.

+0

Excelente, no sabía acerca de StatusBarItem, gracias! –

+0

Dos elementos no se están alineando. solo un artículo individual se está alineando a la derecha –

+0

¿StatusBar es la única manera de alinear correctamente el texto en 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> 

Este ejemplo no estropeará su Separador. Basado en un ejemplo tomado de http://kent-boogaart.com/blog/the-perfect-wpf-statusbar

No debe poner un Separador en un StatusBarItem, reducirá su separador a un punto.

+0

el separador se muestra como un punto, porque intenta mostrarlo horizontalmente. Tienes que rotarlo http://stackoverflow.com/questions/2744627/wpf-separator-position – invalidusername

1

Para cualquiera que esté buscando la respuesta a la pregunta en el título (no necesariamente para usar en una barra de estado), encontré que una Etiqueta es mejor que un TextBlock para tener control sobre la alineación y sentirse semánticamente correcto.

Cuestiones relacionadas