如何使WPF ListView项目水平重复,如水平滚动条?
问题描述:
我有一个WPF ListView垂直重复数据。我无法弄清楚如何使其重复水平,如在Windows资源管理器中的幻灯片视图。我目前的ListView定义如下:如何使WPF 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>
但WrapPanel有时会换? – 2016-11-25 18:07:49