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); }