2009-02-19 15 views
13

Wie bekomme ich den TextBlock in meiner Statusleiste unten, um nach rechts auszurichten?Wie bekomme ich einen TextBlock rechtsbündig?

ich gesagt habe, es zu:

  • Horizontal = "Rechts"
  • Textalignment = "Rechts"

aber der Text noch unobediently auf der linken Seite sitzt. Was muss ich noch sagen?

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

Antwort

16

Ich habe ein Spiel mit Ihrem Code hatte und es geschafft, es so aussehen, „right“ (kein Wortspiel beabsichtigt) durch die Verwendung eines StatusBarItem eher als ein Textblock:

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

nicht sicher, was passiert, mit dem TextBlock - alle meine Erfahrung sagt, dass einige Kombination von HorizontalContentAlignment und HorizontalAlignment (sowohl auf der StatusBar und dem TextBlock) erreichen sollte, was Sie wollen. Wie auch immer - hoffentlich funktioniert das StatusBarItem für dich.

+0

Ausgezeichnet, wusste nicht über StatusBarItem, danke! –

+0

Zwei Elemente richten sich nicht aus. Nur ein einzelnes Element ist rechtsbündig –

+0

Ist StatusBar die einzige Möglichkeit, Text in XAML auszurichten? –

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> 

Dieses Beispiel wird Ihr Separator nicht durcheinander bringen. Basierend auf einem Beispiel aus http://kent-boogaart.com/blog/the-perfect-wpf-statusbar

Sie sollten kein Trennzeichen in ein StatusBarItem einfügen, es wird Ihr Trennzeichen auf einen Punkt reduzieren.

+0

Das Trennzeichen wird als Punkt angezeigt, da es versucht, es horizontal anzuzeigen. Sie müssen es http://stackoverflow.com/questions/2744627/wpf-separator-position drehen – invalidusername

1

Für jeden, der nach der Antwort auf die Frage im Titel sucht (nicht unbedingt in einer Statusleiste), fand ich ein Label besser als ein TextBlock, um die Ausrichtung zu kontrollieren und trotzdem semantisch korrekt zu sein.

Verwandte Themen