コード例 #1
0
 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);
 }
コード例 #2
0
 private async void RestoreScrollPosition()
 {
     if (this.savedScrollPosition != null)
     {
         await ListViewPersistenceHelper.SetRelativeScrollPositionAsync(BottomUpList, this.savedScrollPosition, (s) => Task.FromResult((object)s).AsAsyncOperation());
     }
 }
コード例 #3
0
 private void Page_Loaded(object sender, RoutedEventArgs e)
 {
     if (!string.IsNullOrEmpty(_persistedPosition))
     {
         _ = ListViewPersistenceHelper.SetRelativeScrollPositionAsync(itemGridView, _persistedPosition, GetItem);
     }
 }
コード例 #4
0
 private async void Page_Loaded(object sender, RoutedEventArgs e)
 {
     if (!string.IsNullOrEmpty(_persistedPosition))
     {
         await ListViewPersistenceHelper.SetRelativeScrollPositionAsync(this.DuanListView, _persistedPosition, this.GetItem);
     }
 }
コード例 #5
0
 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);
     }
 }
コード例 #6
0
        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();
                }
            }
        }
コード例 #7
0
 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" }
         });
     }
 }
コード例 #8
0
 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" }
         });
     }
 }
コード例 #9
0
        public String GetState(Func <Object, String> itemToKeyFunction)
        {
            var itemToKeyHandler = (ListViewItemToKeyHandler)((item) => itemToKeyFunction.Invoke(item));

            return(ListViewPersistenceHelper.GetRelativeScrollPosition(this, itemToKeyHandler));
        }
コード例 #10
0
        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());
        }
コード例 #11
0
 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());
 }
コード例 #12
0
        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
        {
            _persistedPosition = ListViewPersistenceHelper.GetRelativeScrollPosition(DuanListView, GetKey);

            base.OnNavigatingFrom(e);
        }