2016-04-01 3 views
0

Ich muss den Zustand wiederherstellen, nachdem die Zurück-Taste gedrückt wurde. Ich bin dies derzeit tun:Nach welchem ​​Ereignis kann ScrollIntoView auf ListView sicher aufgerufen werden?

<ListView Name="listView" ItemsSource="{Binding MyItems}" Loaded="ListView_Loaded" /> 

private async void ListView_Loaded(object sender, RoutedEventArgs e) { 
    await Task.Delay(100); 
    listView.ScrollIntoView(myItem); 
} 

Als ich überspringen Task.Delay die ScrollIntoView Anruf ignoriert, da der Platzhalter für myItem noch nicht initialisiert ist.

Welche ListView Ereignis muss ich stattdessen abonnieren?

Antwort

1

Warum nennen Sie das nicht OnNavigatedTo Funktion der Seite.

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
     listView.ScrollIntoView(listView.Items[0]); 
} 
+0

Dies funktioniert nicht, weil 'OnNavigatedTo' gefeuert wird, bevor die' listView' vollständig selbst initialisiert wird, obwohl die 'DataContext' im Konstruktor zugewiesen wird. –

+0

Dies funktioniert, wenn Sie die Listenansicht auf das erste Element zurücksetzen möchten, da der Status von Listenansicht standardmäßig beibehalten wird, wenn Sie zu dieser Seite zurück navigieren. Wenn Sie "NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;' – Jerin

+0

festgelegt haben, tritt dieses Verhalten nicht auf. Dies kann sich auf "CollectionViewSource" auswirken. Ich benutze es zum Gruppieren. –

Verwandte Themen