Элементы списка WPF XAML WrapPanel в строке
Я вынужден просить о помощи, в то время как я не могу понять это сам. Я работаю над настольным приложением WPF-XAML, в котором GUI в основном генерируется динамически.
мой запрос касается стиля WrapPanel с элементами ListBox.
пожалуйста, найдите фрагмент кода из моего usercontrol (.XAML-код):
<DockPanel x:Name="xResultPanel">
<ListView x:Name="bResultPanel" ItemsSource="{Binding ResultList, UpdateSourceTrigger=PropertyChanged}">
<ListView.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}">
<WrapPanel ItemWidth="140" Orientation="Horizontal">
<ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Width="120" Margin="10" HorizontalAlignment="Left">
<Image />
<TextBlock />
</StackPanel
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</WrapPanel>
</Expander>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</DockPanel>
выше код возвращает элементы списка, представленные не в строке, но каждый элемент в новой строке. Я попытался установить MinWidth, Ширина etc для WrapPanel и ListBox, но без результата.
заранее спасибо за все связанные советы, как заставить WrapPanel заполнять его содержимое по горизонтали.
1 ответов
проблема в том, что ваш WrapPanel
имеет только одного ребенка:ListBox
. Это означает, что верстка делается ItemsPanel
шаблон ListBox
.
попробуйте это вместо этого:
<Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}">
<ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Width="120" Margin="10" HorizontalAlignment="Left">
<Image />
<TextBlock />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</Expander>