2008-12-11 16 views
53

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:¿Cómo puedo hacer que los elementos ListView de WPF se repitan horizontalmente, como una barra de desplazamiento horizontal?

<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> 

Respuesta

163

Ajuste el ItemsPanel del ListView un StackPanel horizontal. De esta manera:

<ListView.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Horizontal"></StackPanel> 
    </ItemsPanelTemplate> 
</ListView.ItemsPanel> 
10

Tal vez una mejor manera de hacer esto sería utilizar un VirtualizingStackPanel que tiene todas las mismas propiedades pero es mucho más performante especialmente para los cuadros de lista con un montón de artículos.

2

me pareció más fácil para 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> 

+0

Sin embargo, un WrapPanel envolvería en algún momento? –

+0

hasta que llegue al borde derecho y vaya como una nueva línea de izquierda a derecha otra vez – stenly

Cuestiones relacionadas