private static void PopulateInnerItemsRecursively( ModelItem modelItem, OutlineItemObservableCollection propertiesItems) { if (modelItem == null) { return; } foreach (var property in modelItem.Properties) { if (property == null) { continue; } var propertyHolderOutlineItem = new OutlinePropertyHolderItem(property.Name); if (property.IsCollection && property.Collection != null && property.PropertyType.IsGenericType) { var genericTypes = property.PropertyType.GetGenericArguments(); if (genericTypes.Length == 1 && (genericTypes[0].IsAssignableFrom(typeof(Activity)) || genericTypes[0].IsAssignableFrom(typeof(Variable)) || genericTypes[0].IsAssignableFrom(typeof(FlowNode)))) { foreach (var modelItemItem in property.Collection) { propertyHolderOutlineItem.InnerItems.Add(GetOutlineItem(modelItemItem)); } propertiesItems.Add(propertyHolderOutlineItem); } } else { var primitive = GetOutlineItem(property.Value); if (primitive != null) { propertyHolderOutlineItem.InnerItems.Add(primitive); propertiesItems.Add(propertyHolderOutlineItem); } } } }
protected OutlineItem() { IsExpanded = true; InnerItems = new OutlineItemObservableCollection(); }