Я делаю простое приложение LOB, которое загружает данные из XML-файла и отображает его в списке с несколькими кнопками для редактирования.Использование WrapPanel и ScrollViewer для создания многоколоночного списка в WPF
С моей первой попытки все было в порядке, за исключением того, что список прокручивался вниз в одной длинной колонке. Я бы предпочел, чтобы данные были обернуты так, что в нижней части окна он запускает второй столбец и т. Д. - если вы измените размер окна, данные должны соответственно изменить размер.
Во-первых, я просто поместил ListBox внутри ScrollViewer. Это не имело никакого значения.
Затем я добавил WrapPanel внутри ItemTemplate. В этот момент я получил длинный ряд по горизонтали, но он никогда не был перенесен во второй ряд, несмотря на то, что мой параметр ScrollViewer.HorizontalScrollbar = отключен.
Я искал в Интернете различные блоги и форумы, но не вижу разницы между предложениями и моим кодом (см. Ниже). Любые советы будут высоко оценены.
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="My App" Height="300" Width="400"
FocusManager.FocusedElement="{Binding ElementName=eventsList}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Row="0" Grid.Column="0" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ListBox Name="eventsList">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</ScrollViewer>
<StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Center" Visibility="Collapsed">
<Button Name="action1Button" />
<Button Name="action2Button" />
<Button Name="action3Button" />
</StackPanel>
</Grid>
</Window>
Мне не хватало ScrollViewer.VerticalScrollBarVisibility = "Disabled". Благодаря!!!!!!!!!!!!!!!!!! –
3 года спустя ... Этот пост по-прежнему очень полезен, спасибо! – GETah
полезно 8 лет спустя, а также если вы хотите прокручивать панель обертки только по вертикали: ScrollViewer.HorizontalScrollBarVisibility = "Disabled"> – user3704628