{"record":{"id":"b6cfe5b3f60d37f5","repo":"dotnet/wpf","slug":"sr-animation-invalid-defaultvalue","errorCode":null,"errorMessage":"SR.Animation_Invalid_DefaultValue","messagePattern":"SR\\.Animation_Invalid_DefaultValue","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimation.cs","lineNumber":313,"sourceCode":"                    if (IsAdditive)\n                    {\n                        foundation = defaultOriginValue;\n                        validateOrigin = true;\n                    }\n\n                    break;\n\n                default:\n\n                    Debug.Fail(\"Unknown animation type.\");\n\n                    break;\n            }\n\n            if (validateOrigin \n                && !AnimatedTypeHelpers.IsValidAnimationValuePoint3D(defaultOriginValue))\n            {\n                throw new InvalidOperationException(\n                    SR.Format(\n                        SR.Animation_Invalid_DefaultValue,\n                        this.GetType(),\n                        \"origin\",\n                        defaultOriginValue.ToString(CultureInfo.InvariantCulture)));\n            }\n\n            if (validateDestination \n                && !AnimatedTypeHelpers.IsValidAnimationValuePoint3D(defaultDestinationValue))\n            {\n                throw new InvalidOperationException(\n                    SR.Format(\n                        SR.Animation_Invalid_DefaultValue,\n                        this.GetType(),\n                        \"destination\",\n                        defaultDestinationValue.ToString(CultureInfo.InvariantCulture)));\n            }\n","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimation.cs#L295-L331","documentation":"Point3DAnimation.GetCurrentValueCore throws InvalidOperationException (Animation_Invalid_DefaultValue) when the default origin value is not a valid animation value for Point3D (e.g. NaN/Infinity components or an unset Point3D) while the animation must fall back to the base value.","triggerScenarios":"Animating without explicit From/To/By values so the current value is used as origin, but the target property's current Point3D is invalid (NaN, Infinity, or empty/unset).","commonSituations":"Target property never initialized or data-bound to NaN; corrupted transform matrices producing invalid points; animation layered on a property with unset value.","solutions":["Ensure the target property holds a valid finite Point3D before the animation starts","Set explicit From/To (or By) values on the animation so the base value isn't used","Validate the bound value (reject NaN/Infinity) in your data layer"],"exampleFix":"// before\nnew Point3DAnimation { Duration = TimeSpan.FromSeconds(1) }; // relies on possibly invalid base value\n// after\nnew Point3DAnimation(new Point3D(0,0,0), new Point3D(10,10,10), Duration.Automatic);","handlingStrategy":"validation","validationCode":"bool IsValidPoint3D(Point3D p) => !double.IsNaN(p.X) && !double.IsNaN(p.Y) && !double.IsNaN(p.Z) && !double.IsInfinity(p.X) && !double.IsInfinity(p.Y) && !double.IsInfinity(p.Z);\nif (!IsValidPoint3D(targetValue)) targetValue = new Point3D(0,0,0); // fix before animating","typeGuard":"bool IsValidAnimationValue(Point3D? p) => p.HasValue && !double.IsNaN(p.Value.X) && !double.IsInfinity(p.Value.X) && !double.IsNaN(p.Value.Y) && !double.IsInfinity(p.Value.Y) && !double.IsNaN(p.Value.Z) && !double.IsInfinity(p.Value.Z);","tryCatchPattern":"try { animation.Begin(animationTarget, true); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"origin\")) { /* set explicit From value and retry */ }","preventionTips":["Initialize animated Point3D properties to valid finite values","Prefer explicit From/To to avoid relying on the base value","Reject NaN/Infinity at the data-binding layer"],"tags":["wpf","animation","point3d","invalid-value"],"backgroundTag":"invalid-argument-value","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"}