XAML通用应用程序:如何进行水平滚动ListView

Rob*_*rke 10 xaml windows-phone-8 win-universal-app

我无法使水平滚动ListView工作.我非常接近,但接下来的事情并不是很正常.

这是我目前在搜索互联网后提出的XAML.这些项目是水平显示的,但问题是它仍然只想垂直滚动,即使我试图强制水平开启和垂直关闭所有内容.

有没有人对我做错了什么有任何见解?

<ScrollViewer x:Name="scrollWatchlist" Grid.Row="1" Margin="0,5,0,3" DataContext="{Binding MovieViewModel}"
              HorizontalScrollMode="Enabled"
              HorizontalScrollBarVisibility="Visible"
              IsHorizontalRailEnabled="True"

              VerticalScrollMode="Disabled"
              VerticalScrollBarVisibility="Disabled"
              IsVerticalRailEnabled="False"

              IsScrollInertiaEnabled="True">
    <ScrollViewer.Template>
        <ControlTemplate>
            <ListView Margin="0,5,0,3" ItemsSource="{TemplateBinding DataContext}">
                <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
                </ListView.ItemsPanel>
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ListViewItem Margin="0,0,5,0" Tag="{Binding ID}">
                            <Image Source="{Binding FormattedPosterUri}" Width="92" />
                        </ListViewItem>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </ControlTemplate>
    </ScrollViewer.Template>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

更新:这是一个有效的XAML示例,适用于遇到此问题的任何人:

<ListView x:Name="lvwMovieWatchlist" Grid.Row="1" Margin="0,5,0,3" ItemsSource="{Binding MovieViewModel}"
          ScrollViewer.HorizontalScrollMode="Enabled"
          ScrollViewer.HorizontalScrollBarVisibility="Visible"
          ScrollViewer.IsHorizontalRailEnabled="True"
          ScrollViewer.VerticalScrollMode="Disabled">

    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.ItemTemplate>
        <DataTemplate>
            <ListViewItem Margin="0,0,5,0" Tag="{Binding ID}">
                <Image Source="{Binding FormattedPosterUri}" Width="92" />
            </ListViewItem>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)

Swi*_*arp 7

你不需要ScrollViewer,而且你应该得到那些属性ListView

<ListView  Margin="0,5,0,3" ItemsSource="{TemplateBinding DataContext}"ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.IsHorizontalRailEnabled="True">
Run Code Online (Sandbox Code Playgroud)

  • 您还需要禁用 VerticalScrolling,否则鼠标滚轮按钮将不起作用。 (2认同)

Lie*_*ero 5

建议使用 GridView 来显示水平滚动的项目。只需在您的代码中将 ListView 替换为 Gridview 即可。

但是,您可以将 ListView 与水平滚动条一起使用:

<ListView ScrollViewer.HorizontalScrollBarVisibility="Auto"
          ScrollViewer.HorizontalScrollMode="Enabled"
          ScrollViewer.VerticalScrollMode="Disabled">
Run Code Online (Sandbox Code Playgroud)

  • 你能发布一个链接,让微软或普通民众说它是“推荐”的吗?此外,使用 Grid 不会像 ListView 那样提供用于选择特定项目的点击动画反馈。我特别想要那个功能。 (2认同)