Igo*_*man 7 c# xaml windows-phone-8 windows-phone-8.1
我有一个Windows Phone 8.1 XAML应用程序,其ListViewnad 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>
Run Code Online (Sandbox Code Playgroud)
页面的缓存模式设置为NavigationCacheMode.Required.
我在列表中搜索,点击一个项目并导航到另一个屏幕.当我导航回到页面时ListView,ListView记住scoll位置(NavigationCacheMode.Required)但是"破碎",当我点击项目时,他们只是奇怪地跳起来.
以下是重现问题的完整简单解决方案:https://dl.dropboxusercontent.com/u/73642/listview.zip.
这是一个显示问题的视频:https://dl.dropboxusercontent.com/u/73642/listview.wmv
有人经历过这个吗?有没有解决这个问题的方法?
我发现的一种解决方法是将其包装ListView在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>
Run Code Online (Sandbox Code Playgroud)
然后你ListView像这样包装:
<ScrollViewer Style="{StaticResource VerticalScrollViewerStyle}">
<ListView ...>
...
</ListView>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
这样 的ListView内部ScrollViewer就不会被使用,这似乎解决了你的问题。ListView现在,依赖于要使用的内部ScrollViewer(例如增量加载)的某些功能可能存在一些问题。您将对其进行测试,然后看看您需要的功能是否有效。
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |