Как заставить элементы WPF ListView повторяться по горизонтали, например горизонтальную полосу прокрутки?
у меня есть WPF ListView, который повторяет данные по вертикали. Я не могу понять, как заставить его повторять по горизонтали, как слайд-шоу в Проводнике Windows. Мое текущее определение ListView:
<ListView ItemsSource="{StaticResource MyDataList}" ItemTemplate="{StaticResource ListViewTemplate}">
</ListView>
DataTemplate (хотя я считаю, что это не должно иметь значения);
<Rectangle HorizontalAlignment="Stretch" Margin="0,1,0,0" x:Name="rectReflection" Width="Auto" Grid.Row="1" Height="30">
<Rectangle.Fill>
<VisualBrush Stretch="None" AlignmentX="Center" AlignmentY="Top" Visual="{Binding ElementName=imgPhoto}">
<VisualBrush.RelativeTransform>
<TransformGroup>
<MatrixTransform Matrix="1,0,0,-1,0,0" />
<TranslateTransform Y="1" />
</TransformGroup>
</VisualBrush.RelativeTransform>
</VisualBrush>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<RadialGradientBrush GradientOrigin="0.5,1.041">
<RadialGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.202" ScaleY="2.865"/>
<SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5"/>
<RotateTransform Angle="0" CenterX="0.5" CenterY="0.5"/>
<TranslateTransform X="-0.002" Y="-0.491"/>
</TransformGroup>
</RadialGradientBrush.RelativeTransform>
<GradientStop Color="#D9000000" Offset="0"/>
<GradientStop Color="#01FFFFFF" Offset="0.8"/>
</RadialGradientBrush>
</Rectangle.OpacityMask>
</Rectangle>
</Grid>
</Border>
</DataTemplate>
3 ответа:
установить для элемента управления ListView горизонтальный элемент StackPanel. Вот так:
<ListView.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal"></StackPanel> </ItemsPanelTemplate> </ListView.ItemsPanel>
возможно, лучшим способом сделать это было бы использовать VirtualizingStackPanel, который имеет все те же свойства, но гораздо более эффективен, особенно для списков с большим количеством элементов.
мне было легче идти этим путем
<ItemsControl ItemsSource="{Binding Path=Steps}"> <ItemsControl.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding PageName}" Padding="10" /> </DataTemplate> </ItemsControl.ItemTemplate> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <WrapPanel></WrapPanel> </ItemsPanelTemplate> </ItemsControl.ItemsPanel>