Beispiel #1
0
 protected internal Task OnSelectedCommand(BLMouseEventArgs eventArgs)
 {
     // un-select row if the user is holding the ctrl key on already selected row
     if (eventArgs.CtrlKey && eventArgs.Button == MouseButton.Left &&
         ParentDataGrid.SelectedRow != null &&
         (object)Item == (object)ParentDataGrid.SelectedRow)
     {
         return(Selected.InvokeAsync(default));
 private async Task HandleSingleSelectClick(BLMouseEventArgs eventArgs)
 {
     // Un-select row if the user is holding the ctrl key on already selected row.
     if (ParentDataGrid.SingleSelect && IsCtrlClick(eventArgs) &&
         ParentDataGrid.SelectedRow != null &&
         Item.IsEqual(ParentDataGrid.SelectedRow))
     {
         await ParentDataGrid.Select(default);
        private async Task HandleMultiSelectClick(BLMouseEventArgs eventArgs)
        {
            if (ParentDataGrid.MultiSelect)
            {
                var isSelected = (ParentDataGrid.SelectedRows == null || (ParentDataGrid.SelectedRows != null && !ParentDataGrid.SelectedRows.Any(x => x.IsEqual(Item))));
                var shiftClick = (eventArgs.ShiftKey && eventArgs.Button == MouseButton.Left);

                await OnMultiSelectCommand(isSelected || shiftClick, shiftClick);
            }
        }
        protected internal Task OnSelectedCommand(BLMouseEventArgs eventArgs)
        {
            var selectable = ParentDataGrid.RowSelectable?.Invoke(Item) ?? true;

            if (!selectable)
            {
                return(Task.CompletedTask);
            }

            // un-select row if the user is holding the ctrl key on already selected row
            if (eventArgs.CtrlKey && eventArgs.Button == MouseButton.Left &&
                ParentDataGrid.SelectedRow != null &&
                (object)Item == (object)ParentDataGrid.SelectedRow)
            {
                return(Selected.InvokeAsync(default));
Beispiel #5
0
        protected internal async Task HandleClick(BLMouseEventArgs eventArgs)
        {
            await Clicked.InvokeAsync(new DataGridRowMouseEventArgs <TItem>(Item, eventArgs));

            var selectable = ParentDataGrid.RowSelectable?.Invoke(Item) ?? true;

            if (!selectable)
            {
                return;
            }

            // un-select row if the user is holding the ctrl key on already selected row
            if (eventArgs.CtrlKey && eventArgs.Button == MouseButton.Left &&
                ParentDataGrid.SelectedRow != null &&
                (object)Item == (object)ParentDataGrid.SelectedRow)
            {
                await Selected.InvokeAsync(default);
Beispiel #6
0
        protected internal async Task HandleClick(BLMouseEventArgs eventArgs)
        {
            if (!clickFromCheck)
            {
                await ParentDataGrid.OnRowClickedCommand(new(Item, eventArgs) );
            }

            var selectable = ParentDataGrid.RowSelectable?.Invoke(Item) ?? true;

            if (!selectable)
            {
                return;
            }

            if (!clickFromCheck)
            {
                await HandleSingleSelectClick(eventArgs);
            }

            await HandleMultiSelectClick(eventArgs);

            clickFromCheck = false;
        }
Beispiel #7
0
 public DataGridRowMouseEventArgs(TItem item, BLMouseEventArgs mouseEventArgs)
 {
     Item           = item;
     MouseEventArgs = mouseEventArgs;
 }
        private bool IsCtrlClick(BLMouseEventArgs eventArgs)
        {
            var isMacOsCtrl = ParentDataGrid.IsClientMacintoshOS && eventArgs.MetaKey;

            return((eventArgs.CtrlKey || isMacOsCtrl) && eventArgs.Button == MouseButton.Left);
        }