public ResourcesPresenterViewModel Adapt(ResourceDictionary resources)
        {
            this.resources = resources;

            var model = new ResourcesPresenterViewModel();

            var allResource = new List <Tuple <object, object> >();

            FindResourcesRecursively(allResource, this.resources);

            BuildModel(model, allResource);

            return(model);
        }
        private void BuildModel(ResourcesPresenterViewModel model, List <Tuple <object, object> > allResource)
        {
            if (allResource.Count == 0)
            {
                return;
            }

            foreach (var keyVal in allResource)
            {
                var type = keyVal.Item2.GetType();
                foreach (var builder in builders)
                {
                    builder.Add(type, keyVal.Item1.ToString(), keyVal.Item2);
                }
            }

            foreach (var item in builders)
            {
                if (!item.IsEmpty())
                {
                    model.Groups.Add(item.Get());
                }
            }
        }