{"record":{"id":"74734bb9b9724c3d","repo":"dotnet/wpf","slug":"sr-namescopenamenotfound-namescope","errorCode":null,"errorMessage":"SR.NameScopeNameNotFound","messagePattern":"SR\\.NameScopeNameNotFound","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/NameScope.cs","lineNumber":94,"sourceCode":"\n        /// <summary>\n        /// Unregister Name-Object Map \n        /// </summary>\n        /// <param name=\"name\">name to be registered</param>\n        public void UnregisterName(string name)\n        {\n            ArgumentNullException.ThrowIfNull(name);\n\n            if (name.Length == 0)\n                throw new ArgumentException(SR.NameScopeNameNotEmptyString);\n\n            if (_nameMap != null && _nameMap[name] != null)\n            {\n                _nameMap.Remove(name);\n            }\n            else\n            {\n                throw new ArgumentException(SR.Format(SR.NameScopeNameNotFound, name));\n            }\n\n            if (TraceNameScope.IsEnabled)\n            {\n                TraceNameScope.TraceActivityItem( TraceNameScope.UnregisterName,\n                                                  this, name );\n            }\n        }\n\n        /// <summary>\n        /// Find - Find the corresponding object given a Name\n        /// </summary>\n        /// <param name=\"name\">Name for which context needs to be retrieved</param>\n        /// <returns>corresponding Context if found, else null</returns>\n        public object FindName(string name)\n        {\n            if (_nameMap == null || string.IsNullOrEmpty(name))\n                return null;","sourceCodeStart":76,"sourceCodeEnd":112,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/NameScope.cs#L76-L112","documentation":"NameScope.UnregisterName removes a name-to-object mapping from a XAML namescope. If the name does not exist in the namescope's name map, this ArgumentException is thrown. The library treats unregistering an unknown name as a programming error rather than silently ignoring it.","triggerScenarios":"Calling UnregisterName(name) on a NameScope (or element via NameScope.SetNameScope/FindName-related helpers) where `name` was never registered with RegisterName, or was already unregistered, or the namescope is empty.","commonSituations":"Unregistering a XAML element name twice; unregistering a name that was defined in a different namescope (e.g. templates vs page); trying to remove a name registered programmatically with a different casing; cleanup code running before registrations occurred.","solutions":["Call NameScope.ContainsName(nameScope, name) (or check FindName != null) before calling UnregisterName.","Wrap UnregisterName in try/catch for ArgumentException if double-unregister is expected in your cleanup logic.","Verify you are operating on the correct namescope instance — names registered on an ancestor namescope are not visible here.","Check that the name string exactly matches the one passed to RegisterName (case-sensitive)."],"exampleFix":"// before\nnameScope.UnregisterName(\"okButton\"); // throws if never registered\n\n// after\nif (NameScope.ContainsName(nameScope, \"okButton\"))\n{\n    nameScope.UnregisterName(\"okButton\");\n}","handlingStrategy":"validation","validationCode":"if (NameScope.ContainsName(nameScope, name))\n{\n    nameScope.UnregisterName(name);\n}","typeGuard":null,"tryCatchPattern":"try\n{\n    nameScope.UnregisterName(name);\n}\ncatch (ArgumentException ex) when (ex.Message.Contains(\"NameScopeNameNotFound\"))\n{\n    // name was not registered; safe to ignore during cleanup\n}","preventionTips":["Mirror every RegisterName with exactly one UnregisterName in symmetric setup/teardown code.","Use ContainsName checks in shared cleanup helpers.","Remember names are case-sensitive and namescope-specific."],"tags":["wpf","namescope","argument-exception","xaml"],"backgroundTag":"resource-not-found","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-22T01:17:13.364Z"}