¿Cómo puedo hacer que los elementos ListView de WPF se repitan horizontalmente, como una barra de desplazamiento horizontal?
listview xaml (3)
Establezca el Panel de elementos de ListView en un StackPanel horizontal. Me gusta esto:
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
Tengo un WPF ListView que repite los datos verticalmente. No puedo entender cómo hacer que se repita horizontalmente, como la vista de diapositivas en el Explorador de Windows. Mi definición actual de ListView es:
<ListView ItemsSource="{StaticResource MyDataList}" ItemTemplate="{StaticResource ListViewTemplate}">
</ListView>
DataTemplate es (aunque creo que esto no debería importar);
<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>
Me pareció más fácil ir de esta manera
<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>
Tal vez una mejor forma de hacerlo sea utilizar VirtualizingStackPanel, que tiene todas las mismas propiedades, pero es mucho más eficiente, especialmente para listboxes con muchos elementos.