Example #1
0
        private void OnItemClick(object sender, ItemClickEventArgs args)
        {
            ItemClick?.Invoke(this, new Windows.UI.Xaml.Controls.ItemClickEventArgs {
                ClickedItem = BindableAdapter.GetRawItem(args.Position)
            });

            HandleItemSelection(args);
        }
Example #2
0
        private void HandleItemSelection(ItemClickEventArgs args)
        {
            if (SelectionMode != ListViewSelectionMode.None)
            {
                var newSelection = BindableAdapter.GetRawItem(args.Position);

                switch (SelectionMode)
                {
                case ListViewSelectionMode.Single:
                    var selectedItem = BindableAdapter.SelectedItems.FirstOrDefault();

                    // Unselect the current item only if a new selection is made or
                    // the option to unselect the current item is activated.
                    if (selectedItem != null && (selectedItem != newSelection || UnselectOnClick))
                    {
                        BindableAdapter.SetItemSelection(selectedItem, null, false);
                    }

                    if (selectedItem != newSelection)
                    {
                        BindableAdapter.SetItemSelection(
                            newSelection,
                            (args.View as ItemContainerHolder)?.Child as SelectorItem,
                            true
                            );
                    }

                    SelectedItem = newSelection;
                    break;

                case ListViewSelectionMode.Multiple:
                    BindableAdapter.SetItemSelection(
                        BindableAdapter.GetRawItem(args.Position),
                        args.View as SelectorItem,
                        !BindableAdapter.SelectedItems.Contains(newSelection)
                        );
                    break;
                }

                SelectedItems = BindableAdapter.SelectedItems.ToArray();
            }
        }
Example #3
0
        private void UpdateSelection(IList <object> newSelection)
        {
            if (BindableAdapter != null)
            {
                if (!BindableAdapter.SelectedItems.SequenceEqual(newSelection))
                {
                    var removed = BindableAdapter
                                  .SelectedItems
                                  .Except(newSelection)
                                  .ToArray();

                    var added = newSelection
                                .Except(BindableAdapter.SelectedItems)
                                .ToArray();

                    removed.ForEach((object i) => BindableAdapter.SetItemSelection(i, null, false));
                    added.ForEach((object i) => BindableAdapter.SetItemSelection(i, null, true));
                }
            }
        }
Example #4
0
        private void ExecuteCommandOnItem(ICommand command, int position)
        {
            if (command == null)
            {
                return;
            }

            var item = BindableAdapter.GetRawItem(position);

            if (item == null)
            {
                return;
            }

            if (!command.CanExecute(item))
            {
                return;
            }

            command.Execute(item);
        }
        private void UpdateSelection(object[] oldSelection, object[] newSelection)
        {
            if (BindableAdapter != null)
            {
                if (!BindableAdapter.SelectedItems.SequenceEqual(newSelection))
                {
                    var removed = BindableAdapter
                                  .SelectedItems
                                  .Except(newSelection)
                                  .ToArray();

                    var added = newSelection
                                .Except(BindableAdapter.SelectedItems)
                                .ToArray();

                    removed.ForEach((object i) => BindableAdapter.SetItemSelection(i, null, false));
                    added.ForEach((object i) => BindableAdapter.SetItemSelection(i, null, true));
                }
            }

            SelectionChanged?.Invoke(this, new SelectionChangedEventArgs(oldSelection, newSelection));
        }
Example #6
0
 private int TryGetItemViewTypeFromItem(int position)
 {
     return(BindableAdapter?.GetItemViewType(position) ?? 0);
 }
Example #7
0
 protected override void SetupItemClickListeners()
 {
     BindableAdapter.SetOnItemClickListener(this);
     BindableAdapter.SetOnItemClickListener(this);
 }