Как выровнять элементы по верху в горизонтальном списке? - PullRequest
0 голосов
/ 25 июня 2009

Как выровнять элементы по верху в горизонтальном списке?

У меня закончились идеи о том, куда можно вставить 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; }
    }
}

1 Ответ

2 голосов
/ 25 июня 2009

Вам необходимо установить VerticalContentAlignment в списке, все остальные имеющиеся у вас выравнивания могут быть удалены, как только это будет установлено.

....
<ListBox Name="listBox" ItemsSource="{Binding}"  VerticalContentAlignment="Top" >
....

Значением по умолчанию для VerticalContentAlightment в ListBox является «Центр», поэтому, даже если вы устанавливали VerticalAlignment в другом месте, он просто выравнивался по верху элементов ListBoxItems, которые по-прежнему центрировались, а не растягивались или размещались сверху. Если вы установите VerticalContentAlignment в значение Stretch, то вы увидите, что другие объявления VerticalAlignment = "Top" работают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...