2011-01-03 17 views
11

Próbuję użyć poniższego kodu, aby utworzyć poziomy listbox w module WP7 silverlight. Pozycje są wyświetlane poziomo, ale przewijanie jest nadal pionowe.Jak uzyskać poziome pole listy do przewijania w poziomie w WP7?

Czy robię coś złego w WPF? Czy jest to błąd specyficzny dla WP7?

<Style TargetType="ListBox" x:Name="HorizontalListBox"> 
     <Setter Property="ItemsPanel"> 
      <Setter.Value> 
       <ItemsPanelTemplate> 
        <VirtualizingStackPanel Orientation="Horizontal" 
              IsItemsHost="True" 
              CanHorizontallyScroll="True" 
              CanVerticallyScroll="False"/> 
       </ItemsPanelTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Edytuj: Brakowało mi dwóch właściwości, które sprawiają wrażenie ogromnej różnicy. (Rozwiązanie pochodziło z drugiego linku w zaakceptowanej odpowiedzi przez Mick N.)

<Style TargetType="ListBox" x:Name="HorizontalListBox"> 
     <Setter Property="ItemsPanel"> 
      <Setter.Value> 
       <ItemsPanelTemplate> 
        <VirtualizingStackPanel Orientation="Horizontal" IsItemsHost="True" CanHorizontallyScroll="True" CanVerticallyScroll="False"/> 
       </ItemsPanelTemplate> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
     <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"/> 
    </Style> 

Odpowiedz

6
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" >  
     <ScrollViewer HorizontalScrollBarVisibility="Auto" Margin="0,6,-196,0" Height="Auto" Name="imageScroll"> 
     <ListBox x:Name="imageBox" Margin="12,0,0,0"> 
       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel Orientation ="Horizontal" > 
          <StackPanel.RenderTransform> 
           <TranslateTransform 
            X="0" /> 
          </StackPanel.RenderTransform> 

         </StackPanel> 
        </ItemsPanelTemplate> 
       </ListBox.ItemsPanel> 
        <ListBox.ItemTemplate> 
       <DataTemplate> 
         <Image Source="{Binding Avatar}" Width="240" Stretch="Fill" Height=" 100" /> 
        <!--<TextBlock TextWrapping="Wrap" Text="{Binding Titulo}" FontSize="35" VerticalAlignment="Center" Margin="0,10" />-->      
       </DataTemplate> 
      </ListBox.ItemTemplate>     
     </ListBox> 
     </ScrollViewer> 
    </Grid> 

Jest to kod, który pracuje dla mnie.

2

OK, prawie dwa lata później, ale kod Mahantesh pracował dobrze dla mnie tylko 2 dodatki, o wyłączenie mienia verticalScrollBar zarówno linii ScrollViewer aw linii pola listy, aby uniknąć ListBox nadal jest w stanie przewinąć pionowo

<ScrollViewer HorizontalScrollBarVisibility="Auto" 
       VerticalScrollBarVisibility="Disabled" 
       Margin="0,6,-196,0" 
       Height="Auto" Name="imageScroll"> 
<ListBox x:Name="imageBox" 
     ScrollViewer.VerticalScrollBarVisibility="Disabled" 
     Margin="12,0,0,0"> 
Powiązane problemy