public override void CopySettings(FilterDataProviderVM provider)
        {
            if (!(provider is GaussianFilterDataProviderVM donor))
            {
                throw new ArgumentException("Donor provider must be of a type GaussianFilterDataProviderVM, was of type:" + provider.GetType().ToString());
            }

            width  = donor.Width;
            height = donor.Height;
            sigma  = donor.Sigma;


            SetData();
        }
        public override void CopySettings(FilterDataProviderVM provider)
        {
            if (!(provider is BasicMatrixFilterDataProviderVM donor))
            {
                throw new ArgumentException("Donor provider must be of a type BasicMatrixFilterDataProviderVM, was of type:" + provider.GetType().ToString());
            }

            Height = donor.Height;
            Width  = donor.Width;
            Matrix = donor.Matrix;

            //subscribe to all events
            foreach (ObservableCollection <PrimitiveWrapper <double> > oc in Matrix)
            {
                oc.CollectionChanged += MidChanged;
                foreach (PrimitiveWrapper <double> pw in oc)
                {
                    pw.PropertyChanged += BotChanged;
                }
            }

            SetData();
        }