WPF - Как выровнять по правому краю textblock в горизонтально ориентированном stackpanel?

Разве это не w3wp.exe?

17
задан Andrea Antonangeli 25 August 2017 в 10:42
поделиться

2 ответа

В свете ваших комментариев, вот еще один пример, показывающий несколько способов достижения того, что вы хотите, макет сетки и макет DockPanel. Судя по звукам, макет DockPanel, вероятно, то, что вы ищете. Если это не сработает, вам может потребоваться более четкое описание желаемого макета и свойств.

<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>
2
ответ дан 30 November 2019 в 12:13
поделиться

Вам нужно использовать DockPanel, если вы не хотите, чтобы все элементы были сложены, как это делает StackPanel. Чтобы заставить второй текстовый блок выравниваться вправо, вы можете добавить дополнительный фиктивный текстовый блок, чтобы заполнить область между ними:

 
 <Текстовый блок>Левый текст
 <Текстовый блок DockPanel.Dock="Right">Правый текст
 <Текстовый блок />
 

Или вы можете использовать атрибут TextAlignment:

 
 Левый текст
 Правый текст
 
30
ответ дан 30 November 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: