protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) { // Before we navigate away from the page, we want to generate a new _persistedPosition string. This string contains the key of the item at the top of the // viewing window (generated by the function GetKey) and the offset of that item. RestoreScrollPositionSample._persistedPosition = ListViewPersistenceHelper.GetRelativeScrollPosition(this.ItemsListView, this.GetKey); base.OnNavigatingFrom(e); }
private async void RestoreScrollPosition() { if (this.savedScrollPosition != null) { await ListViewPersistenceHelper.SetRelativeScrollPositionAsync(BottomUpList, this.savedScrollPosition, (s) => Task.FromResult((object)s).AsAsyncOperation()); } }
private void Page_Loaded(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(_persistedPosition)) { _ = ListViewPersistenceHelper.SetRelativeScrollPositionAsync(itemGridView, _persistedPosition, GetItem); } }
private async void Page_Loaded(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(_persistedPosition)) { await ListViewPersistenceHelper.SetRelativeScrollPositionAsync(this.DuanListView, _persistedPosition, this.GetItem); } }
private async void Page_Loaded(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(RestoreScrollPositionSample._persistedPosition)) { // Here we kick off the async function to use the saved string _persistedPosition and the function GetItem to restore the scroll posistion await ListViewPersistenceHelper.SetRelativeScrollPositionAsync(this.ItemsListView, RestoreScrollPositionSample._persistedPosition, this.GetItem); } }
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) { _persistedPosition = ListViewPersistenceHelper.GetRelativeScrollPosition(itemGridView, GetKey); base.OnNavigatingFrom(e); if (e.Cancel) { return; } if (e.NavigationMode == NavigationMode.Back) { _persistedPosition = null; var animation = ConnectedAnimationService.GetForCurrentView() .PrepareToAnimate(CONNECTED_ANIMATION_HOSTED_CONFIG_NAME, hostedConfigNameTextBlock); if (ApiInformation.IsTypePresent("Windows.UI.Xaml.Media.Animation.DirectConnectedAnimationConfiguration")) { animation.Configuration = new DirectConnectedAnimationConfiguration(); } } }
private void PersistControlsState() { try { TempSettingsUtils.Set(Constants.TEMP_PIVOT_STATE, MainPivot.SelectedIndex); if (this.SurahListView.ItemsPanelRoot != null) { TempSettingsUtils.Set(Constants.TEMP_SURAH_LIST_STATE, ListViewPersistenceHelper.GetRelativeScrollPosition(this.SurahListView, this.GetKeyFromListView)); } if (this.JuzListView.ItemsPanelRoot != null) { TempSettingsUtils.Set(Constants.TEMP_JUZ_LIST_STATE, ListViewPersistenceHelper.GetRelativeScrollPosition(this.JuzListView, this.GetKeyFromListView)); } } catch (Exception ex) { telemetry.TrackException(ex, new Dictionary <string, string> { { "Scenario", "PersistControlsState" } }); } }
private async void RestoreControlsState() { try { var pivotState = TempSettingsUtils.Get <int>(Constants.TEMP_PIVOT_STATE); if (pivotState >= 0) { MainPivot.SelectedIndex = pivotState; } var surahListViewState = TempSettingsUtils.Get <string>(Constants.TEMP_SURAH_LIST_STATE); if (surahListViewState != null) { await ListViewPersistenceHelper.SetRelativeScrollPositionAsync(this.SurahListView, surahListViewState, key => { return(Task.Run(() => { return (object)ViewModel.Surahs.FirstOrDefault(s => s.Id == key); }).AsAsyncOperation()); }); } var juzListViewState = TempSettingsUtils.Get <string>(Constants.TEMP_JUZ_LIST_STATE); if (juzListViewState != null) { await ListViewPersistenceHelper.SetRelativeScrollPositionAsync(this.JuzListView, juzListViewState, key => { return(Task.Run(() => { return (object)ViewModel.Juz.FirstOrDefault(s => s.Id == key); }).AsAsyncOperation()); }); } } catch (Exception ex) { telemetry.TrackException(ex, new Dictionary <string, string> { { "Scenario", "RestoreControlsState" } }); } }
public String GetState(Func <Object, String> itemToKeyFunction) { var itemToKeyHandler = (ListViewItemToKeyHandler)((item) => itemToKeyFunction.Invoke(item)); return(ListViewPersistenceHelper.GetRelativeScrollPosition(this, itemToKeyHandler)); }
public Task SetStateAsync(String state, Func <String, Object> keyToItemFunction) { ListViewKeyToItemHandler keyToItemHandler = (key) => LoadedStateAwaiter.Task.ContinueWith(t => String.IsNullOrEmpty(key) ? null : keyToItemFunction.Invoke(key)).AsAsyncOperation(); return(ListViewPersistenceHelper.SetRelativeScrollPositionAsync(this, state, keyToItemHandler).AsTask()); }
private void SaveScrollPosition() { // We let the item be its own key. In a more general program, the item would have // a unique ID that identifies it in the list. this.savedScrollPosition = ListViewPersistenceHelper.GetRelativeScrollPosition(BottomUpList, (o) => o.ToString()); }
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) { _persistedPosition = ListViewPersistenceHelper.GetRelativeScrollPosition(DuanListView, GetKey); base.OnNavigatingFrom(e); }