2016-03-05 81 views
0

我正在创建一个Windows 8.1应用程序,并且我有一个列表视图,其中每行可以超出屏幕限制。我想允许使用左右滚动行宽,但我似乎无法让水平滚动查看器显式设置其属性时显示事件。如何在WinRT中的ListView中启用水平滚动

<ListView 
     ItemsSource="{Binding AllColors}" 
     ScrollViewer.HorizontalScrollBarVisibility="Visible" 
     ScrollViewer.HorizontalScrollMode="Enabled" 
     > 
     <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="Width" Value="3600"/> 
       <Setter Property="HorizontalAlignment" Value="Stretch"/> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
      </Style> 
     </ListView.ItemContainerStyle> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Rectangle Height="100"> 
        <Rectangle.Fill> 
         <LinearGradientBrush> 
          <GradientStop Offset="0" Color="Black"/> 
          <GradientStop Offset="0.5" Color="{Binding}"/> 
          <GradientStop Offset="1" Color="White"/> 
         </LinearGradientBrush> 
        </Rectangle.Fill> 
       </Rectangle> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

水平滚动条出现,但它不允许滚动(好像没有必要......),而它里面的物品是更广泛然后屏幕。

有没有办法做到这一点?

+0

您是否尝试设置'ItemsPanel'的宽度? –

回答

0

这些设置为Auto应该足够

ScrollViewer.HorizontalScrollBarVisibility="Auto" 
ScrollViewer.HorizontalScrollMode="Auto" 

也许你ListView水平StackPanel或其他ScrollViewer托管?

+0

感谢您的回答,请参阅问题,我将这些属性设置在那里,将它们设置为auto并不能解决问题。另外,不,ListView不是托管在堆栈面板或滚动查看器中,而是托管在网格中。问题不在于虚拟化丢失,而在于没有水平滚动。 –

+0

我知道,我看到你设置了这些。我说你不应该设置其他的东西。这可能会导致问题。我只是将它们设置在ListView上,并开始双向滚动。 –

+0

但我*需要*其他设置。我需要展开内容并使用ItemsStackPanel ... –