private void HandleElementBaseType(ElementSave asElementSave) { string newValue = asElementSave.BaseType; // kill the old instances: asElementSave.Instances.RemoveAll(item => item.DefinedByBase); if (StandardElementsManager.Self.IsDefaultType(newValue)) { StateSave defaultStateSave = StandardElementsManager.Self.GetDefaultStateFor(newValue); asElementSave.Initialize(defaultStateSave); } else { var baseElement = ObjectFinder.Self.GetElementSave(asElementSave.BaseType); StateSave stateSave = new StateSave(); if (baseElement != null) { // This copies the values to this explicitly, which we don't want //FillWithDefaultRecursively(baseElement, stateSave); foreach (var instance in baseElement.Instances) { var derivedInstance = instance.Clone(); derivedInstance.DefinedByBase = true; asElementSave.Instances.Add(derivedInstance); } asElementSave.Initialize(stateSave); } } const bool fullRefresh = true; // since the type might change: GumCommands.Self.GuiCommands.RefreshElementTreeView(asElementSave); PropertyGridManager.Self.RefreshUI(fullRefresh); StateTreeViewManager.Self.RefreshUI(asElementSave); }