簡體   English   中英

在Windows Phone 8.1 XAML中使用WrapGrid的ListView的奇怪行為

[英]Strange behavior of ListView with WrapGrid in Windows Phone 8.1 XAML

我有一個帶有ListView nad WrapGrid的Windows Phone 8.1 XAML應用程序作為其WrapGrid來顯示兩列中的項目

<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 (例如增量加載)。 你將測試它,你會看到你需要什么工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM