{"record":{"id":"7eae9262dde69c55","repo":"dotnet/wpf","slug":"argumentnullexception-nameof-targetobject-trigger","errorCode":null,"errorMessage":"ArgumentNullException (nameof(targetObject))","messagePattern":"ArgumentNullException \\(nameof\\(targetObject\\)\\)","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Trigger.cs","lineNumber":285,"sourceCode":"                        Property, _cultureInfoForTypeConverter, _unresolvedValue);\n                }\n                finally\n                {\n                    _unresolvedValue = null;\n                }\n            }\n            _serviceProvider = null;\n            _cultureInfoForTypeConverter = null;\n        }\n\n        #endregion\n\n        public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)\n        {\n            Trigger trigger = targetObject as Trigger;\n            if (trigger == null)\n            {\n                throw new ArgumentNullException(nameof(targetObject));\n            }\n            ArgumentNullException.ThrowIfNull(eventArgs);\n\n            if (eventArgs.Member.Name == \"Property\")\n            {\n                trigger._unresolvedProperty = eventArgs.Value;\n                trigger._serviceProvider = eventArgs.ServiceProvider;\n                trigger._cultureInfoForTypeConverter = eventArgs.CultureInfo;\n\n                eventArgs.Handled = true;\n            }\n            else if (eventArgs.Member.Name == \"Value\")\n            {\n                trigger._unresolvedValue = eventArgs.Value;\n                trigger._serviceProvider = eventArgs.ServiceProvider;\n                trigger._cultureInfoForTypeConverter = eventArgs.CultureInfo;\n\n                eventArgs.Handled = true;","sourceCodeStart":267,"sourceCodeEnd":303,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Trigger.cs#L267-L303","documentation":"Trigger.ReceiveTypeConverter is the XAML callback for x:SetTypeConverter. It casts targetObject to Trigger and, if the cast yields null (including when targetObject is null), throws ArgumentNullException(nameof(targetObject)) — this callback must only ever be invoked with a Trigger target.","triggerScenarios":"The XAML type-converter-set callback invoked with a targetObject that is not a Trigger (or null) — essentially only from custom/broken XAML parsing infrastructure or a misregistered callback.","commonSituations":"Custom XAML schema contexts or third-party XAML parsers invoking the callback incorrectly; reflection-driven code calling ReceiveTypeConverter directly with a wrong target.","solutions":["Ensure the callback is only wired to Trigger instances (via [XamlSetTypeConverter] on Trigger) and not other types.","Guard before invoking: if (targetObject is Trigger) Trigger.ReceiveTypeConverter(targetObject, e);","If using a custom XAML parser, verify it honors the attribute's declaring type when routing callbacks."],"exampleFix":"// before\nTrigger.ReceiveTypeConverter(notATrigger, eventArgs); // throws\n// after\nif (notATrigger is Trigger t) { /* let XAML invoke it, or */ Trigger.ReceiveTypeConverter(t, eventArgs); }","handlingStrategy":"type-guard","validationCode":"if (targetObject is not Trigger) throw new ArgumentException(\"ReceiveTypeConverter must be invoked with a Trigger target\");","typeGuard":"static bool IsTriggerTarget(object o) => o is Trigger;","tryCatchPattern":"try { Trigger.ReceiveTypeConverter(targetObject, eventArgs); }\ncatch (ArgumentNullException ex) { log.Error($\"Unexpected XAML callback target: {ex.Message}\"); }","preventionTips":["Don't call XAML set-type-converter callbacks manually; let the XAML system route them","Ensure custom XAML schema contexts respect declaring types","Register the callback only through the [XamlSetTypeConverter] attribute"],"tags":["wpf","xaml","argument-null","type-converter"],"backgroundTag":"null-argument","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}