public static List <IModelProperty> GetModelPropertys(DependencyObject obj)
        {
            if (obj == null)
            {
                return(new List <IModelProperty>());
            }
            DesignAttributeService service = TryGetService(obj);

            if (service == null)
            {
                return(new List <IModelProperty>());
            }
            var result = service._ModelPropertyList.Select(x =>
            {
                var pro = new ModelPropertyImpl();
                pro.CopyFrom(x);
                pro.Owner = obj;
                if (pro.Binding != null)
                {
                    pro.Binding.Source = obj;
                }
                return((IModelProperty)pro);
            }).ToList();

            IDesignerChildable childable = obj as IDesignerChildable;

            if (childable != null)
            {
                result.AddRange(GetModelPropertys(childable.DesignerChild));
            }
            return(result);
        }