文本块中的水平调整不起作用

Posted

技术标签:

【中文标题】文本块中的水平调整不起作用【英文标题】:horizontalalingment in textblock don't work 【发布时间】:2014-07-01 13:39:56 【问题描述】:

我在 xaml 中有这样的代码:

                    <ListBoxItem>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="DynamicResource Referee" Width="120" FontWeight="Bold" Margin="0 0 5 0" HorizontalAlignment="Right"></TextBlock>
                            <TextBlock Text="LOL" Margin="0 0 5 0"></TextBlock>
                        </StackPanel>
                    </ListBoxItem>

问题是第一个 textBlock 没有向右对齐,而是向左对齐。

有很多列表框项目,我想让第一列向右对齐,第二列向左对齐。在每个 stackPanel 中,第一个文本块的宽度为 120。ListBox 在网格列中,列宽设置为 Auto。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

默认情况下,堆叠面板从左到右堆叠项目(这可以通过设置 FlowDirection="RightToLeft" 进行更改)因此,如果堆叠面板跨越整个可用区域并不重要,第一个项目将始终停靠到左边,不管你怎么对齐。

<ListBoxItem>
     <StackPanel Orientation="Horizontal" FlowDirection="RightToLeft" HorizontalAlignment="Right">
          <TextBlock Text="DynamicResource Referee" Width="120" FontWeight="Bold" Margin="0 0 5 0"></TextBlock>
          <TextBlock Text="LOL" Margin="0 0 5 0"></TextBlock>
     </StackPanel>
</ListBoxItem>

但是,如果您希望一个文本块停靠在左侧,另一个停靠在右侧,那么您应该使用 DockPanel 或 Grid。

使用 DockPanel:

<ListBoxItem>
     <DockPanel>
          <TextBlock Text="DynamicResource Referee" Width="120" FontWeight="Bold" Margin="0 0 5 0" DockPanel.Dock="Right"></TextBlock>
          <TextBlock Text="LOL" Margin="0 0 5 0" DockPanel.Dock="Left"></TextBlock>
     </DockPanel>
</ListBoxItem>

使用网格:

<ListBoxItem>
     <Grid>
          <TextBlock Text="DynamicResource Referee" Width="120" FontWeight="Bold" Margin="0 0 5 0" HorizontalAlignment="Right"></TextBlock>
          <TextBlock Text="LOL" Margin="0 0 5 0" HorizontalAlignment="Left"></TextBlock>
     </Grid>
</ListBoxItem>

默认情况下,网格和停靠面板都将填充其父级分配给它们的空间。如果未指定宽度/高度,停靠面板的最后一个子项将填充剩余的可用空间。

【讨论】:

【参考方案2】:

设置 TextAlignment 属性

<TextBlock Text="DynamicResource Referee" Width="120" FontWeight="Bold" Margin="0 0 5 0" TextAlignment="Right"></TextBlock>

【讨论】:

【参考方案3】:

将 StackPanel 的属性“Horizo​​ntalAlignment”设置为“Stretch”。

【讨论】:

以上是关于文本块中的水平调整不起作用的主要内容,如果未能解决你的问题,请参考以下文章

调整文本大小时 HTML 标记不起作用

Binding 中的 WPF StringFormat 在后面的代码中不起作用

指定返回时,位置块中的 auth_basic 不起作用?

在 insertSections 不起作用后 UITableView 键盘调整大小

UILabel 调整大小不起作用

在匿名块中使用变量来更改 SQL SEQUENCE 不起作用