tutorial - xaml visual studio 2017
¿Cómo hacer que TextBlock se alinee a la derecha? (3)
He jugado con tu código y he logrado que se vea "bien" (sin juego de palabras) usando 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 estoy seguro de lo que está sucediendo 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 usted desea. De todos modos, es de esperar que StatusBarItem funcione para usted.
¿Cómo obtengo el TextBlock en mi barra de estado a continuación para alinearlo a la derecha?
Le dije que:
- HorizontalAlignment = "Derecha"
- TextAlignment = "Derecha"
pero el texto sigue sentado inocentemente 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>
Para cualquiera que esté buscando la respuesta a la pregunta en el título (no necesariamente para usarla en una barra de estado), encontré una Etiqueta para ser mejor que un TextBlock para tener control sobre la alineación y seguir sintiéndome semánticamente correcto.
<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.