public static bool HasRectangularSelection(this DataGridContext gridContext)
        {
            foreach (var item in gridContext.GetSelectedItems())
            {
                foreach (var column in gridContext.GetSelectedColumns())
                {
                    var itemIndex   = gridContext.Items.IndexOf(item);
                    var columnIndex = gridContext.VisibleColumns.IndexOf(column);

                    var contains = false;

                    foreach (var range in gridContext.SelectedCellRanges)
                    {
                        if (range.ItemRange.Contains(itemIndex) == true && range.ColumnRange.Contains(columnIndex) == true)
                        {
                            contains = true;
                        }
                    }

                    if (contains == false)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
        public DomainTextClipboardPaster(DataGridContext gridContext)
        {
            this.gridContext = gridContext;
            this.columns     = gridContext.GetSelectedColumns().ToArray();
            this.items       = gridContext.GetSelectedItems().ToArray();

            if (gridContext.Items.SourceCollection is not ITypedList typedList)
            {
                var source = (gridContext.Items.SourceCollection as CollectionView).SourceCollection;
                typedList = source as ITypedList;
            }

            this.props       = typedList.GetItemProperties(null);
            this.tableName   = CremaDataTable.GetTableName(typedList.GetListName(null));
            this.columnNames = CremaDataRowUtility.GetColumnNames(typedList);
        }