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));
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);
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; }
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); }