private static void OnColumnsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            GridColumnsBase <TGrid, TColumn> gridColumnsBase = (GridColumnsBase <TGrid, TColumn>)d;

            if (e.OldValue is INotifyCollectionChanged oldCollectionChanged)
            {
                oldCollectionChanged.CollectionChanged -= gridColumnsBase.OnColumnsChanged;
            }

            if (e.NewValue is INotifyCollectionChanged newCollectionChanged)
            {
                newCollectionChanged.CollectionChanged += gridColumnsBase.OnColumnsChanged;
            }

            gridColumnsBase.OnColumnsChanged(d, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
        }
        private static void OnCellTemplateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            GridColumnsBase <TGrid, TColumn> gridColumnsBase = (GridColumnsBase <TGrid, TColumn>)d;

            gridColumnsBase.OnColumnsChanged(d, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
        }