在水平列表框中,如何将项目与顶部对齐?
我已经不知道在哪里坚持使用VerticalAlignment =“Top”。
<Window.Resources>
<DataTemplate DataType="{x:Type l:MyType}">
<Grid VerticalAlignment="Top">
<TextBlock VerticalAlignment="Top" Text="{Binding MyValue}" Background="Yellow"/>
</Grid>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox Name="listBox" ItemsSource="{Binding}" VerticalAlignment="Top" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem Content="{Binding}" VerticalAlignment="Top" VerticalContentAlignment="Top"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
using System.Windows;
namespace WpfApplication5 {
public partial class Window1 :Window {
public Window1() {
InitializeComponent();
this.listBox.ItemsSource = new MyType[] {
new MyType{ MyValue = "Tall\nItem" },
new MyType{ MyValue = "I want this aligned to the top" } };
}
}
public class MyType {
public string MyValue { get; set; }
}
}
答案 0 :(得分:2)
您需要在列表框中设置VerticalContentAlignment,一旦设置了,就可以删除其中的所有其他对齐。
....
<ListBox Name="listBox" ItemsSource="{Binding}" VerticalContentAlignment="Top" >
....
ListBox上的VerticalContentAlightment的默认值是'Center',所以即使你在其他地方设置VerticalAlignment,它也只是对齐ListBoxItems的顶部,它们仍然居中而不是拉伸或放在顶部。如果将VerticalContentAlignment设置为Stretch,那么您将看到其他VerticalAlignment =“Top”声明工作。