示例#1
0
 public AmpTableViewSource(UITableView tableView)
     : base(tableView, typeof(T).Name, typeof(T).Name)
 {
     SelectedItemChanged += (sender, e) =>
     {
         ItemClickCommand.ExecuteIfPossible(SelectedItem);
     };
 }
示例#2
0
        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;
            }
        }
示例#3
0
        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;
            }
        }