wpf xaml .net-3.5 textblock stackpanel

WPF: ¿Cómo alinear correctamente un bloque de texto dentro de un panel de apilamiento orientado horizontalmente?



textblock multiline wpf (3)

A la luz de sus comentarios, aquí hay otro ejemplo que muestra un par de formas de lograr lo que desea, diseño de cuadrícula y diseño de DockPanel. Por lo que parece, el diseño de DockPanel es probablemente lo que estás buscando. Si esto no funciona, es posible que deba proporcionar una descripción más clara del diseño y las propiedades que desee.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="0.45*" /> <RowDefinition Height="0.05*" /> <RowDefinition Height="0.45*" /> </Grid.RowDefinitions> <Grid Grid.Row="0"> <Grid.ColumnDefinitions> <!-- note: you don''t need to declare ColumnDefintion widths here; added for clarity. --> <ColumnDefinition Width="0.5*" /> <ColumnDefinition Width="0.5*" /> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Background="Tomato" TextWrapping="Wrap">I''m on the left</TextBlock> <TextBlock Grid.Column="1" Background="Yellow" TextAlignment="Right" TextWrapping="Wrap">I''m on the right</TextBlock> </Grid> <Grid Grid.Row="1" Background="Gray" /> <DockPanel Grid.Row="2"> <TextBlock DockPanel.Dock="Left" Background="Tomato" TextWrapping="Wrap">I''m on the left</TextBlock> <TextBlock DockPanel.Dock="Right" Background="Yellow" TextAlignment="Right" TextWrapping="Wrap">I''m on the right</TextBlock> </DockPanel> </Grid> </Page>

Esto debería ser tan simple: he estado golpeando mi cabeza contra mi escritorio durante tanto tiempo tratando de hacer una tarea aparentemente simple (me hace sentir que WPF no es intuitivo o está lleno de errores) ...

En cualquier caso, tengo un Stackpanel que está configurado en orientación horizontal. Dentro tengo dos TextBlocks. Quiero que el segundo muestre su texto a la derecha.

¿Cómo lo logro?

Hacer todo esto me recuerda por qué me alejé de Silverlight. :pag


Debe utilizar un DockPanel si no desea que todos los elementos se apilen como lo hace StackPanel. Para hacer que el segundo TextBlock se alinee a la derecha, puede agregar un TextBlock ficticio adicional para llenar el área entre ellos:

<DockPanel> <TextBlock>Left text</TextBlock> <TextBlock DockPanel.Dock="Right">Right text</TextBlock> <TextBlock /> </DockPanel>

O puede usar el atributo TextAlignment :

<DockPanel> <TextBlock>Left text</TextBlock> <TextBlock TextAlignment="Right">Right text</TextBlock> </DockPanel>


Se puede archivar de manera muy sencilla usando grilla ya que tengo el mismo problema :)

<Grid> <TextBlock>Left text</TextBlock> <TextBlock TextAlignment="Right">Right text</TextBlock> </Grid>