【发布时间】:2011-04-21 13:51:56
【问题描述】:
我正在尝试对齐ListBoxItem 的内容。在下面的示例中,我想让TextBlock 左对齐,Button 在 ListBox 的每一行中右对齐。但是 Button 总是紧跟在 TextBlock 文本的结尾之后,并且在 ListBox 中没有右对齐。
<StackPanel>
<ListBox ItemsSource="{Binding MyDataList}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding SomeTextProperty}"
VerticalAlignment="Center" Margin="5" />
<Button Content="Display"
HorizontalAlignment="Right" Margin="5"
Command="{Binding SomeCommand}"
CommandParameter="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
我想我的 XAML 中需要更改一些内容。我做错了什么?
感谢您的帮助!
【问题讨论】:
-
只有几分钟,否则我会发布代码,但您可以将项目放在 DockPanel 而不是 StackPanel 中(分别使用 Dock Left 和 Right),然后将 ListBox 上的 HorizontalContentAlignment 设置为 Stretch。
-
@Dan Bryant:感谢您的指导。 DockPanel 解决方案也可以正常工作。我只注意到我必须定义按钮的固定宽度,否则每个按钮都会从 TextBlock 文本的末尾延伸到 ListBox 的右边框。
-
为了将来参考,DockPanel 有一个属性 LastChildFill,默认为 True,这会导致您观察到的行为。如果将此属性设置为 false,则最后一个子节点将按照指示停靠。