void AddTypeItem(List <string> path, ObservableCollection <TypeItem> typeItems, TypeItem item)
        {
            var currentPathName = path[0];

            path.RemoveAt(0);
            if (path.Count == 0)
            {
                typeItems.Add(item);
            }
            else
            {
                bool find = false;
                foreach (var itm in typeItems)
                {
                    if (itm.TypeName == currentPathName)
                    {
                        find = true;
                        AddTypeItem(path, itm.ChildList, item);
                        break;
                    }
                }

                if (!find)
                {
                    var parentItem = new TypeItem();
                    parentItem.TypeName = currentPathName;
                    typeItems.Add(parentItem);
                    AddTypeItem(path, parentItem.ChildList, item);
                }
            }
        }
        TypeItem CreateTypeItem(Type type, string typename = null)
        {
            var retVal = new TypeItem()
            {
                Type     = type,
                TypeIcon = TryFindResource("Icon_Pill") as ImageSource,
            };

            if (typename == null)
            {
                retVal.TypeName = type.Name;
            }
            else
            {
                retVal.TypeName = typename;
            }

            return(retVal);
        }