我有一个 Windows Phone 8.1 XAML 应用程序ListView
nad WrapGrid
作为其 ItemsPanel 以两列显示项目
<ListView x:Name="ListV" ItemClick="ListV_ItemClick" IsItemClickEnabled="True">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" ItemWidth="160" ItemHeight="280" MaximumRowsOrColumns="2" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="Red" Margin="12" Width="100" Height="100"></Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
页面的缓存模式设置为NavigationCacheMode.Required
.
我滚动列表,点击一个项目并导航到另一个屏幕。当我导航回页面时ListView
, the ListView
记住滚动位置(NavigationCacheMode.Required
)但是被“破坏”了,当我点击物品时,它们只是奇怪地跳跃。
这是重现该问题的完整简单解决方案:https://dl.dropboxusercontent.com/u/73642/listview.zip https://dl.dropboxusercontent.com/u/73642/listview.zip.
这是显示问题的视频:https://dl.dropboxusercontent.com/u/73642/listview.wmv https://dl.dropboxusercontent.com/u/73642/listview.wmv
还有其他人经历过这个吗?有办法解决这个问题吗?
我发现的一种解决方法是包装ListView
in a ScrollViewer
。这是垂直滚动查看器的样式:
<Style x:Key="VerticalScrollViewerStyle" TargetType="ScrollViewer">
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled" />
<Setter Property="VerticalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled" />
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled" />
<Setter Property="ScrollViewer.ZoomMode" Value="Disabled" />
</Style>
然后你把ListView
像这样:
<ScrollViewer Style="{StaticResource VerticalScrollViewerStyle}">
<ListView ...>
...
</ListView>
</ScrollViewer>
这样一来ListView
的内部ScrollViewer
没有使用过,这似乎可以解决你的问题。现在,某些功能可能存在一些问题ListView
这取决于内部ScrollViewer
要使用的(例如增量加载)。您将对其进行测试,然后看看您需要的功能是否有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)