2009-02-19 14 views
13

Jak ustawić pasek tekstowy w poniższym pasku stanu, aby wyrównać w prawo?Jak uzyskać blokadę tekstu do wyrównania w prawo?

Powiedziałem jej:

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

ale tekst jest nadal siedzi unobediently po lewej stronie. Co jeszcze mam do powiedzenia?

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

Odpowiedz

16

miałem grać z kodem i udało się sprawić wrażenie „prawo” (gra słów nie przeznaczonych) za pomocą StatusBarItem raczej niż TextBlock:

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

Nie wiem, co się dzieje z TextBlock - całe moje doświadczenie mówi, że niektóre kombinacje HorizontalContentAlignment i HorizontalAlignment (zarówno na StatusBar, jak i TextBlock) powinny osiągnąć to, co chcesz. W każdym razie - mam nadzieję, że StatusBarItem będzie działać dla ciebie.

+0

Dobrze, nie wiedziałem o StatusBarItem, dziękuję! –

+0

Dwa elementy nie są wyrównujące. Tylko jedna pozycja dopasowuje się prawidłowo –

+0

Czy StatusBar jest jedynym sposobem wyrównania do prawej strony tekstu w 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> 

Ten przykład nie zepsuje Twojego separatora. Na podstawie przykładu z http://kent-boogaart.com/blog/the-perfect-wpf-statusbar

Nie powinieneś wstawiać separatora do StatusBarItem, zmniejszy to twój separator do kropki.

+0

separator jest wyświetlany jako kropka, ponieważ próbuje wyświetlić go w poziomie. Musisz obrócić go http://stackoverflow.com/questions/2744627/wpf-separator-position – invalidusername

1

Dla każdego, kto szuka odpowiedzi na pytanie w tytule (niekoniecznie do użycia na pasku stanu), znalazłem etykietę lepszą niż TextBlock dla kontroli nad wyrównaniem i wciąż czuję semantyczną poprawność.

Powiązane problemy