dotnet/wpf · error · ArgumentNullException
ArgumentNullException (nameof(targetObject))
Error message
ArgumentNullException (nameof(targetObject))
What it means
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.
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.
Example fix
// before
Trigger.ReceiveTypeConverter(notATrigger, eventArgs); // throws
// after
if (notATrigger is Trigger t) { /* let XAML invoke it, or */ Trigger.ReceiveTypeConverter(t, eventArgs); } Defensive patterns
Strategy: type-guard
Validate before calling
if (targetObject is not Trigger) throw new ArgumentException("ReceiveTypeConverter must be invoked with a Trigger target"); Type guard
static bool IsTriggerTarget(object o) => o is Trigger;
Try / catch
try { Trigger.ReceiveTypeConverter(targetObject, eventArgs); }
catch (ArgumentNullException ex) { log.Error($"Unexpected XAML callback target: {ex.Message}"); } Prevention
- 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
When it happens
Trigger: 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.
Common situations: Custom XAML schema contexts or third-party XAML parsers invoking the callback incorrectly; reflection-driven code calling ReceiveTypeConverter directly with a wrong target.
Related errors
- ArgumentNullException(nameof(assemblyName))
- ArgumentNullException(nameof(assemblyNames))
- ArgumentNullException(nameof(assemblyPath))
- ArgumentNullException(nameof(clrNamespace))
- ArgumentNullException(nameof(localName))
AI-assisted analysis of dotnet/wpf@81131a70a4 (2026-09-14).
Data as JSON: /api/errors/7eae9262dde69c55.
Report an issue: GitHub.
Appendix: source
Thrown at src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Trigger.cs:285
Property, _cultureInfoForTypeConverter, _unresolvedValue);
}
finally
{
_unresolvedValue = null;
}
}
_serviceProvider = null;
_cultureInfoForTypeConverter = null;
}
#endregion
public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
{
Trigger trigger = targetObject as Trigger;
if (trigger == null)
{
throw new ArgumentNullException(nameof(targetObject));
}
ArgumentNullException.ThrowIfNull(eventArgs);
if (eventArgs.Member.Name == "Property")
{
trigger._unresolvedProperty = eventArgs.Value;
trigger._serviceProvider = eventArgs.ServiceProvider;
trigger._cultureInfoForTypeConverter = eventArgs.CultureInfo;
eventArgs.Handled = true;
}
else if (eventArgs.Member.Name == "Value")
{
trigger._unresolvedValue = eventArgs.Value;
trigger._serviceProvider = eventArgs.ServiceProvider;
trigger._cultureInfoForTypeConverter = eventArgs.CultureInfo;
eventArgs.Handled = true;View on GitHub (pinned to 81131a70a4)