Установить высоту элементов ListBox равную самому высокому элементу

99
01 января 2020, 18:30

В списке находятся превьюшки с подписями. Подписи должны выравниваться по нижнему, а превьюшки по верхнему краю своего контейнера. Для этого нужно как-то рассчитывать и устанавливать высоту контейнера для каждого элемента:

Для списка используется контейнер WrapPanel, вся панель с элементами может растягиваться через GridSplitter, что приводит к перескакиванию элементов на след/пред строку. Поэтому количество элементов в строках может меняться и нужно каждый раз подгонять их высоту.

Разметка:

<ListBox Grid.Row="1"
         Padding="15"
         ScrollViewer.HorizontalScrollBarVisibility="Disabled"
         ItemsSource="{Binding Previews}"
         SelectionMode="Extended">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel IsItemsHost="True" Orientation="Horizontal"></WrapPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid Background="Aqua">
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition Height="25" />
                </Grid.RowDefinitions>
                <Image Grid.Row="0"
                    MaxHeight="80"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Top"
                    Stretch="Uniform"
                    Source="{Binding Path}" />
                <Label Grid.Row="1" Content="{Binding Name}" HorizontalAlignment="Center" VerticalAlignment="Bottom" MaxWidth="90px" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Подскажите, как сделать?

Answer 1

Можно сделать выравнивание по верхнему краю в WrapPanel.

Согласно этому ответу на английском SO, для этого нужно для ListBoxItem установить свойство VerticalContentAlignment в Top или Stretch.

<Style TargetType="{x:Type ListBoxItem}">
       <Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>
READ ALSO
PHP, МуSql - как объединить несколько запросов в один?

PHP, МуSql - как объединить несколько запросов в один?

Есть несколько запросов, к базе данныхСуммарно по времени они выполняются более 10 секунд

132
Как в Yii2 добавить атрибут к модели?

Как в Yii2 добавить атрибут к модели?

У меня есть вот такой вот html код, в котором есть vue атрибуты

145
Как задать в Jquery атрибут name?

Как задать в Jquery атрибут name?

Как правильно назвать имя в Jquery, если в html прописан атрибут name из php массива? Просто DATA[name] js не понимает, и скрипт не срабатывает

141