2014-11-27 4 views
7

Ich habe ein Windows Phone 8.1 XAML-App mit einem ListView nad WrapGrid als Itemspanel ArtikelSeltsames Verhalten von Listview mit WrapGrid in Windows Phone 8.1 XAML

<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> 

Der Cache-Modus auf der Seite in zwei Spalten angezeigt ist auf NavigationCacheMode.Required eingestellt.

Ich scroll in der Liste, tippen Sie auf ein Element und navigieren Sie zu einem anderen Bildschirm. Wenn ich mit der ListView zurück zur Seite navigiere, merkt sich die ListView die Scoll-Position (NavigationCacheMode.Required) aber wird "kaputt", wenn ich auf Gegenstände tippe, springen sie einfach merkwürdig.

Hier ist eine vollständige einfache Lösung, um das Problem zu reproduzieren: https://dl.dropboxusercontent.com/u/73642/listview.zip.

Hier ist ein Video zeigt das Problem: https://dl.dropboxusercontent.com/u/73642/listview.wmv

Wer sonst erlebt? Gibt es einen Weg um dieses Problem?

Antwort

2

Eine Problemumgehung, die ich gefunden habe, ist die ListView in eine ScrollViewer zu wickeln. Hier ist ein Stil für vertikalen Scroll-Viewer:

<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> 

Und dann wickeln Sie die ListView wie folgt aus:

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

Auf diese Weise die ListView der internen ScrollViewer nicht verwendet wird, und dies scheint Ihr Problem zu lösen . Nun könnte es einige Probleme mit einigen Merkmalen des ListView geben, die von dem internen zu verwendenden ScrollViewer abhängen (z. B. inkrementelles Laden). Du wirst es testen und du wirst sehen, ob das, was du brauchst, funktioniert.

+0

danke, das funktioniert. Irgendeine Idee, was das seltsame Springen verursacht? –

+0

@IgorKulman Ich habe keine Ahnung. Es ist in der Tat ein sehr seltsames Verhalten. – yasen

Verwandte Themen