gpt4 book ai didi

c# - Windows Phone 8.1 XAML 中带有 WrapGrid 的 ListView 的奇怪行为

转载 作者:太空狗 更新时间:2023-10-29 20:36:24 26 4
gpt4 key购买 nike

我有一个 Windows Phone 8.1 XAML 应用程序,它有一个 ListViewWrapGrid 作为它的 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 导航回页面时,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>

然后像这样包装 ListView:

<ScrollViewer Style="{StaticResource VerticalScrollViewerStyle}">
<ListView ...>
...
</ListView>
</ScrollViewer>

这样就不用ListView内部的ScrollViewer了,这似乎解决了你的问题。现在,ListView 的某些功能可能存在一些问题,这些功能取决于要使用的内部 ScrollViewer(例如增量加载)。您将对其进行测试,看看您需要的是否有效。

关于c# - Windows Phone 8.1 XAML 中带有 WrapGrid 的 ListView 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com