private async void GridViewPages_Loaded(object sender, RoutedEventArgs e) { await RunOnUIThreadAsync(CoreDispatcherPriority.High, () => { if (GridViewPages.Items.Count >= 1) { int index = ViewModel.SelectedPageIndex; // fix GridView initially fails to select item by binding GridViewPages.SelectedIndex = index; // try scroll to selected item try { GridViewItem item = (GridViewItem)GridViewPages.ContainerFromIndex(index); Guard.IsNotNull(item, nameof(item)); BringIntoViewOptions options = new BringIntoViewOptions { AnimationDesired = false, }; item.StartBringIntoView(options); } catch (Exception exc) { ViewModel.AppCenterService.TrackError(exc); } } }); }
private async void GridViewPages_SelectionChanged(object sender, SelectionChangedEventArgs e) { await RunOnUIThreadAsync(CoreDispatcherPriority.Normal, () => { if (GridViewPages.SelectionMode == ListViewSelectionMode.Single && e.AddedItems != null & e.AddedItems.Count != 0) { // select page in view model ViewModel.SelectedPageIndex = GridViewPages.SelectedIndex; // scroll to newly selected item try { GridViewItem item = (GridViewItem)GridViewPages.ContainerFromItem(e.AddedItems[0]); BringIntoViewOptions options = new BringIntoViewOptions { AnimationDesired = true, }; item.StartBringIntoView(options); } catch (Exception) { } } else if (GridViewPages.SelectionMode == ListViewSelectionMode.Single) { try { GridViewPages.SelectedIndex = ViewModel.SelectedPageIndex; } catch (Exception) { } } else if (GridViewPages.SelectionMode != ListViewSelectionMode.Single) { // connect items to view model if (GridViewPages.SelectedRanges.Count == 0) { ViewModel.SelectedRanges = null; } else { ViewModel.SelectedRanges = GridViewPages.SelectedRanges; } // select last selected item in view model if (e.AddedItems != null && e.AddedItems.Count != 0) { int index = GridViewPages.Items.IndexOf(e.AddedItems[e.AddedItems.Count - 1]); ViewModel.SelectedPageIndex = index; } } }); }
public void LlenarGridPaginas(IList <Pagina> paginas) { GridViewPages.DataSource = paginas; GridViewPages.DataBind(); }