[英]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.