bool ResourceDictionary::Remove (const char *key) { if (!key) return false; /* check if the item exists first */ Value* orig_value; gpointer orig_key; if (!g_hash_table_lookup_extended (hash, key, &orig_key, (gpointer*)&orig_value)) return false; from_resource_dictionary_api = true; Collection::Remove (orig_value); from_resource_dictionary_api = false; DependencyObject *ob = orig_value->Is (GetDeployment (), Type::DEPENDENCY_OBJECT) ? orig_value->AsDependencyObject () : NULL; if (ob) ob->SetMentor (NULL); // No need to strengthen orig_value before clearing // because we copy it first. Value orig_copy (*orig_value); g_hash_table_remove (hash, key); EmitChanged (CollectionChangedActionRemove, NULL, &orig_copy, key); return true; }