我在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位于网格列中,其列宽设置为“自动”。
我该如何解决这个问题?
答案 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的属性“HorizontalAlignment”设置为“Stretch”。