private void SaveButton_Click(object sender, RoutedEventArgs e) { foreach (MetadataViewModel metadata in _metadata.Where(md => md.OriginalMetadataName != md.MetadataName)) { NodeProxy.RenameNodeMetadata(metadata.GetContext(), metadata.MetadataName); _metadataNames.Remove(metadata.OriginalMetadataName); _metadataNames.Add(metadata.MetadataName); metadata.UpdateName(); } if (HasChanges) { TypeManager typeManager = IoC.IoCContainer.GetInjectionInstance().GetInstance <TypeManager>(); IMetadataTypeProxy[] metaDataTypes = typeManager.GetAllMetadataTypes(); foreach (KeyValuePair <string, bool> changedMetadata in _changes.Where(changed => changed.Value == true)) { //only update the changed items try { MetadataViewModel metadata = _metadata.Single(m => m.MetadataName.ToLower() == changedMetadata.Key.ToLower()); if (metadata != null) { NodeProxy.SetNodeMetadata(metadata.GetContext(), metadata.MetadataValue, metaDataTypes.Single(md => md.Id == metadata.MetadataTypeUid)); } } catch (Exception) { //ignore any errors if the changed metadata isn't found } } _changes.Clear(); foreach (MetadataViewModel deletedItem in _deletedItems) { NodeProxy.DeleteNodeMetadata(deletedItem.GetContext()); } _deletedItems.Clear(); } SaveButton.IsEnabled = false; ResetOriginals(); ClearChangeIndicator(); }