文本块中的视野不起作用

时间:2014-07-01 13:39:57

标签: wpf xaml listbox

我在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位于网格列中,其列宽设置为“自动”。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

默认情况下,堆栈面板从左到右堆叠项目(可以通过设置FlowDirection =&#34; RightToLeft&#34;来更改)因此,如果堆栈面板跨越整个可用区域并不重要,无论你如何对齐它,第一个项目总是会停靠在左侧。

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

默认情况下,网格和停靠面板都会填充父级给予的空间。如果没有指定宽度/高度,则停靠面板的最后一个子节点将填充剩余的可用空间。

答案 1 :(得分:0)

设置TextAlignment属性

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

答案 2 :(得分:-1)

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