public override IVirtualizedElement <PropertyGridItemBase> CreateElement(
     PropertyGridItemBase data,
     object context)
 {
     if (this.propertyGridElement != null)
     {
         CreatePropertyGridItemElementEventArgs e = new CreatePropertyGridItemElementEventArgs(data);
         PropertyGridItem propertyGridItem        = data as PropertyGridItem;
         if (propertyGridItem != null)
         {
             e.ItemElementType = (object)propertyGridItem.PropertyType == (object)typeof(bool) || (object)propertyGridItem.PropertyType == (object)typeof(bool?) || (object)propertyGridItem.PropertyType == (object)typeof(ToggleState) ? typeof(PropertyGridCheckBoxItemElement) : ((object)propertyGridItem.PropertyType != (object)typeof(Color) ? typeof(PropertyGridItemElement) : typeof(PropertyGridColorItemElement));
         }
         if (data is PropertyGridGroupItem)
         {
             e.ItemElementType = typeof(PropertyGridGroupElement);
         }
         this.propertyGridElement.OnCreateItemElement(e);
         if ((object)e.ItemElementType != null)
         {
             return((IVirtualizedElement <PropertyGridItemBase>)Activator.CreateInstance(e.ItemElementType));
         }
     }
     return(base.CreateElement(data, context));
 }
        public override IVirtualizedElement <PropertyGridItemBase> CreateElement(PropertyGridItemBase data, object context)
        {
            if (propertyGridElement != null)
            {
                CreatePropertyGridItemElementEventArgs args = new CreatePropertyGridItemElementEventArgs(data);
                propertyGridElement.OnCreateItemElement(args);
                if (args.ItemElement != null)
                {
                    return(args.ItemElement);
                }
            }

            if (data is PropertyGridItem)
            {
                return(new PropertyGridItemElement());
            }

            if (data is PropertyGridGroupItem)
            {
                return(new PropertyGridGroupElement());
            }

            return(base.CreateElement(data, context));
        }