如何使WPF ListView项目水平重复,如水平滚动条?
我有一个WPF ListView垂直重复的数据。 我不知道如何使其重复水平,如在Windows资源pipe理器中的幻灯片视图。 我目前的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>
将ListView的ItemsPanel设置为一个水平的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>