2008-12-11 28 views
53

Tôi có một ListView WPF lặp lại dữ liệu theo chiều dọc. Tôi không thể tìm ra cách làm cho nó lặp lại theo chiều ngang, như chế độ xem trình chiếu trong Windows Explorer. Định nghĩa ListView hiện tại của tôi là:Làm cách nào để tạo các mục ListView WPF lặp lại theo chiều ngang, giống như thanh cuộn ngang?

<ListView ItemsSource="{StaticResource MyDataList}" ItemTemplate="{StaticResource ListViewTemplate}"> 
</ListView> 

DataTemplate (mặc dù tôi tin rằng điều này không quan trọng);

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

Trả lời

163

Đặt ItemsPanel của ListView để một StackPanel ngang. Như thế này:

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

Có lẽ một cách tốt hơn để làm điều này sẽ được sử dụng một VirtualizingStackPanel trong đó có tất cả các tính chất tương tự nhưng là nhiều hơn nữa performant đặc biệt đối với listboxes với rất nhiều mặt hàng.

2

tôi tìm thấy nó dễ dàng hơn để đi theo con đường này

<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

Nhưng một WrapPanel sẽ quấn đôi khi? –

+0

cho đến khi nó đạt đến biên giới bên phải và đi như dòng mới từ trái sang phải một lần nữa – stenly

Các vấn đề liên quan