XAML 通用应用:如何制作水平滚动的ListView
XAML Universal App: How to make a horizontal scrolling ListView
我无法让水平滚动的 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>
更新:这是一个工作 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>
您不需要 ScrollViewer
,并且您应该在 ListView
中获取这些属性
<ListView Margin="0,5,0,3" ItemsSource="{TemplateBinding DataContext}"ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.IsHorizontalRailEnabled="True">
建议使用 GridView 来显示水平滚动的项目。只需在您的代码中将 ListView 替换为 Gridview。
但是,您可以使用带水平滚动条的 ListView:
<ListView ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.VerticalScrollMode="Disabled">
我无法让水平滚动的 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>
更新:这是一个工作 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>
您不需要 ScrollViewer
,并且您应该在 ListView
<ListView Margin="0,5,0,3" ItemsSource="{TemplateBinding DataContext}"ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.IsHorizontalRailEnabled="True">
建议使用 GridView 来显示水平滚动的项目。只需在您的代码中将 ListView 替换为 Gridview。
但是,您可以使用带水平滚动条的 ListView:
<ListView ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.VerticalScrollMode="Disabled">