Я хочу показать список миниатюр и позволить пользователю выбрать один. ListBox
казалось очевидным выбором, устанавливая шаблон для включения миниатюры и описания.
Следующий код делает это правильно ...
<ListBox Margin="5"
Name="BackgroundsLb">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Margin="5"
BorderBrush="Black"
BorderThickness="1">
<StackPanel Margin="5">
<Image Source="{Binding Path=Data, Converter={StaticResource BytesToImageVC}}"
Width="150"
HorizontalAlignment="Center" />
<TextBlock Text="{Binding Path=Description}"
HorizontalAlignment="Center" />
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Однако миниатюры отображаются вертикально по одному на строку, как обычно для ListBox
. Учитывая, что миниатюры имеют ширину всего 150 пикселей, я хотел бы показать их в виде сетки, но (в идеале) таким образом, чтобы количество столбцов соответствовало размеру окна.
Я попытался заменить ListBox
на ItemsControl
, добавив следующее ...
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
... и он отобразил именно то, что я хотел, но ItemsControl
не позволяет выбрать , поэтому бесполезен для моей цели.
Есть ли способ создать гибкий, выбираемый дисплей, который заполняет горизонтальное пространство и разбивается на новую строку в соответствии с размером окна?
Спасибо