public ColumnController(GridViewColumn GVC, ColumnTracker CT, ColumnUnitType GUT, double _Width)
        {
            ColumnTracker = CT;
            Width         = _Width;

            switch (ColumnUnitType = GUT)
            {
            case ColumnUnitType.Pixel: IsFixed = false; break;

            case ColumnUnitType.HeaderWidth: Column.Width = GetWidth(); goto case ColumnUnitType.Star;

            case ColumnUnitType.Star: IsFixed = true; break;
            }
            INotifyPropertyChanged INP = (Column = GVC) as INotifyPropertyChanged;

            INP.PropertyChanged += Columen_SizeChanged;
        }
        public void SetWidth()
        {
            if (!BlockSetWidth)
            {
                BlockColumnUpdate = true;
                switch (ColumnUnitType)
                {
                case ColumnUnitType.Pixel:
                    if (IsFixed)
                    {
                        Column.Width = Width;
                    }
                    else
                    {
                        Width = Column.Width;
                        ColumnTracker.Refresh();
                    }

                    break;

                case ColumnUnitType.HeaderWidth: Column.Width = GetHeaderWidth(); break;

                case ColumnUnitType.Star:
                    //if (IsFixed)
                    //{
                    Column.Width = Width * ColumnTracker.StarWidth;
                    //}
                    //else
                    //{
                    //    double HypoWid = ColumnTracker.LSTWidth / GetWidth();
                    //    if (HypoWid == Width)
                    //        Width = ColumnTracker.LSTWidth / GetWidth();
                    //    BlockSetWidth = true;
                    //    ColumnTracker.UpdateColumnWidths();
                    //    BlockSetWidth = false;
                    //}
                    break;
                }
            }
            BlockColumnUpdate = false;
        }