的ListView左右移动,同时滚动

问题描述:

我有以下ListView控件:的ListView左右移动,同时滚动

<ListView ItemsSource="{Binding ArtistList}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Border BorderThickness="0,0,0,0.5" BorderBrush="#22ffffff" Tapped="ArtistTapped"> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto"/> 
         <ColumnDefinition Width="*"/> 
        </Grid.ColumnDefinitions> 
        <Ellipse Grid.Column="0" Canvas.ZIndex="0" Fill="#22ffffff" Width="50" Height="50" Margin="0,10"/> 
        <Ellipse Grid.Column="0" Canvas.ZIndex="1" Stretch="UniformToFill" Width="50" Height="50" Margin="0,10"> 
         <Ellipse.Fill> 
          <ImageBrush ImageSource="{Binding firstAlbumArt}"/> 
         </Ellipse.Fill> 
        </Ellipse> 
        <StackPanel Grid.Column="1" Margin="20,10,0,10"> 
         <TextBlock Text="{Binding name}" Foreground="#ffffffff" FontFamily="Segoe WP" FontSize="18"/> 
         <TextBlock Foreground="#aaffffff" FontFamily="Segoe WP" FontWeight="Light" FontSize="14"> 
          <Run Text="{Binding amountofalbums}"/> 
          <Run Text="album(s)"/> 
         </TextBlock> 
        </StackPanel> 
       </Grid> 
      </Border> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
     </Style> 
    </ListView.ItemContainerStyle> 
</ListView> 

当我向上和向下滚动,ListView控件稍微移动左右,这是很让人讨厌。有两种方法来解决这个问题:

  • 卸下ItemContainerStyle =>项目不再捉襟见肘这是必要的

  • 添加的Horizo​​ntalAlignment =左到ListView =>再次,项目AREN”牛逼拉长了...

有没有办法让ListView的跳转左右,同时保持拉伸ListViewItems?

由于ListView中的虚拟化,这是当前操作系统中的一个错误。

到目前为止,我发现的最佳解决方案是通过给列表中的项目提供与父项匹配的实际宽度。

已经在已经在这里堆栈溢出讨论:https://stackoverflow.com/questions/24361850/listview-in-windows-phone-8-1-wobbles-while-scrolling-though-long-list-xaml/24400075#24400075

ListView中设置ScrollViewer.HorizontalScrollMode="Disabled"。它应该停止不需要的滚动行为。

<ListView ItemsSource="{Binding ArtistList}" ScrollViewer.HorizontalScrollMode="Disabled"> 
    <!-- rest of xaml code --> 
</ListView> 
+0

不幸的是,我已经尝试过这一点,它并没有解决问题。 –