public AmpTableViewSource(UITableView tableView) : base(tableView, typeof(T).Name, typeof(T).Name) { SelectedItemChanged += (sender, e) => { ItemClickCommand.ExecuteIfPossible(SelectedItem); }; }
internal override void OnItemClicked(int clickedIndex) { // Note: don't call base.OnItemClicked(), because we override the default single-selection-only handling var item = ItemFromIndex(clickedIndex); if (IsItemClickEnabled) { // This is required for the NavigationView which references a non-public issue (#17546992 in NavigationViewList) IsItemItsOwnContainerOverride(item); ItemClickCommand.ExecuteIfPossible(item); ItemClick?.Invoke(this, new ItemClickEventArgs { ClickedItem = item }); } //Handle selection switch (SelectionMode) { case ListViewSelectionMode.None: break; case ListViewSelectionMode.Single: if (ItemsSource is ICollectionView collectionView) { //NOTE: Windows seems to call MoveCurrentTo(item); we set position instead to have expected behavior when you have duplicate items in the list. collectionView.MoveCurrentToPosition(clickedIndex); // The CollectionView may have intercepted the change clickedIndex = collectionView.CurrentPosition; } SelectedIndex = clickedIndex; break; case ListViewSelectionMode.Multiple: case ListViewSelectionMode.Extended: HandleMultipleSelection(clickedIndex, item); break; } }
internal override void OnItemClicked(int clickedIndex) { var item = ItemFromIndex(clickedIndex); if (IsItemClickEnabled) { ItemClickCommand.ExecuteIfPossible(item); ItemClick?.Invoke(this, new ItemClickEventArgs { ClickedItem = item }); } //Handle selection switch (SelectionMode) { case ListViewSelectionMode.None: break; case ListViewSelectionMode.Single: if (ItemsSource is ICollectionView collectionView) { //NOTE: Windows seems to call MoveCurrentTo(item); we set position instead to have expected behavior when you have duplicate items in the list. collectionView.MoveCurrentToPosition(clickedIndex); // The CollectionView may have intercepted the change clickedIndex = collectionView.CurrentPosition; } SelectedIndex = clickedIndex; break; case ListViewSelectionMode.Multiple: case ListViewSelectionMode.Extended: HandleMultipleSelection(clickedIndex, item); break; } }