/ / Wyświetlanie listy wyświetlania WPF - wpf, listview, layout, listviewitem

Wyświetlanie listy list WPF - wpf, listview, layout, listviewitem

Próbuję wyświetlić elementy Listview przez RectangleBox (które udało mi się zrobić przy użyciu ControlTemplate)

Mój problem polega na tym, jak działa RectangleBoxzorganizowane w oknie. Chciałbym wyświetlić jak najwięcej w jednym wierszu (w zależności od szerokości okna), a gdy jedna linia jest wypełniona, zaczynam nowy i tak dalej. Organizacja będzie aktualizowana w zależności od szerokości okna po każdej zmianie rozmiaru:

Przykład

To może dać lepsze wyobrażenie o tym, czego chcę, zobaczysz każdą organizację RectangleBox (oznaczoną 1,2 ...) zmieniającą się w zależności od jej szerokości.

Oto mój obecny kod w moim MainWindow xaml:

<ListView Name="PlayerList" ItemsSource="{Binding Players}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>

Zastosowanie następującego stylu:

<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<GroupBox Header="{Binding Name}" Width="250" Height="125" Name="Disp" HorizontalAlignment="Left">
<GroupBox.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,0,0,0" TextAlignment="Right"></TextBlock>
</StackPanel>
</DataTemplate>
</GroupBox.HeaderTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Char}"/>
<TextBlock Text="{Binding Item}"/>
</StackPanel>
</GroupBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

Ale jak dotąd, UniformGrid był tylko fałszywą próbą, rozglądałem się, ale nie mogłem znaleźć rozwiązania. Mam nadzieję, że to po prostu ja jestem głupi i brakuje mi czegoś oczywistego:

Dzięki za pomoc.

Odpowiedzi:

0 dla odpowiedzi № 1

Dzięki za kilka komentarzy.

WrapPanel rzeczywiście był właściwą drogą, po prostu nie myślał o tym: P Potrzebowałem tylko dodać następującą właściwość:

ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Do mojego listview, aby uniknąć wszystkich przedmiotów do ułożenia w jednej linii.