【问题标题】:Strange behavior of ListView with WrapGrid in Windows Phone 8.1 XAMLWindows Phone 8.1 XAML 中 ListView 与 WrapGrid 的奇怪行为
【发布时间】:2015-01-26 06:55:57
【问题描述】:

我有一个 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

其他人经历过这种情况吗?有没有办法解决这个问题?

【问题讨论】:

    标签: c# xaml windows-phone-8 windows-phone-8.1


    【解决方案1】:

    我发现的一种解决方法是将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(例如增量加载)。您将对其进行测试,然后看看您需要的是否有效。

    【讨论】:

    • 谢谢,这行得通。知道是什么导致了奇怪的跳跃吗?
    • @IgorKulman 我不知道。这确实是一种很奇怪的行为。
    猜你喜欢
    • 2016-03-23
    • 2014-07-21
    • 2016-02-24
    • 2014-12-25
    • 2015-05-23
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多