Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
 protected OutlineItem()
 {
     IsExpanded = true;
     InnerItems = new OutlineItemObservableCollection();
 }