// Create the floating header
        private void AddFloatingHeader(GridViewColumnHeader srcHeader)
        {
            GridViewColumnHeader header;

            // #1426973: Because users may put subclassed header as the column header,
            //           we need to create the same type per source header as the floating one
            // Get source header's type
            Type headerType = (srcHeader != null ? srcHeader.GetType() : typeof(GridViewColumnHeader));

            try
            {
                // Instantiate the same type for floating header
                header = Activator.CreateInstance(headerType) as GridViewColumnHeader;
            }
            catch (MissingMethodException e)
            {
                throw new ArgumentException(SR.Get(SRID.ListView_MissingParameterlessConstructor, headerType), e);
            }

            Debug.Assert(header != null, "Cannot instantiate GridViewColumnHeader in AddFloatingHeader");

            header.IsInternalGenerated = true;
            header.SetValue(GridViewColumnHeader.RolePropertyKey, GridViewColumnHeaderRole.Floating);
            header.Visibility = Visibility.Hidden;

            InternalChildren.AddInternal(header);
            _floatingHeader = header;
        }