{"record":{"id":"defa9a6fb8ef0465","repo":"dotnet/wpf","slug":"storyboard-beginstoryboardnostoryboard","errorCode":"Storyboard_BeginStoryboardNoStoryboard","errorMessage":"SR.Format(SR.Storyboard_BeginStoryboardNoStoryboard, BeginStoryboardName)","messagePattern":"SR\\.Format\\(SR\\.Storyboard_BeginStoryboardNoStoryboard, BeginStoryboardName\\)","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/ControllableStoryboardAction.cs","lineNumber":104,"sourceCode":"    }\n\n    // Find a Storyboard object for this StoryboardAction to act on, using the\n    //  given BeginStoryboardName to find a BeginStoryboard instance and use\n    //  its Storyboard object reference.\n    private Storyboard GetStoryboard( FrameworkElement fe, FrameworkContentElement fce, INameScope nameScope )\n    {\n        if( BeginStoryboardName == null )\n        {\n            throw new InvalidOperationException(SR.Storyboard_BeginStoryboardNameRequired);\n        }\n\n        BeginStoryboard keyedBeginStoryboard = Storyboard.ResolveBeginStoryboardName( BeginStoryboardName, nameScope, fe, fce );\n        \n        Storyboard storyboard = keyedBeginStoryboard.Storyboard;\n\n        if( storyboard == null )\n        {\n            throw new InvalidOperationException(SR.Format(SR.Storyboard_BeginStoryboardNoStoryboard, BeginStoryboardName));\n        }\n        \n        return storyboard;\n    }\n\n    private string     _beginStoryboardName = null;\n}\n}\n","sourceCodeStart":86,"sourceCodeEnd":113,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/ControllableStoryboardAction.cs#L86-L113","documentation":"After resolving BeginStoryboardName via ResolveBeginStoryboardName, WPF reads the Storyboard property off the referenced BeginStoryboard. If it is null, GetStoryboard throws this InvalidOperationException because there is no storyboard to control.","triggerScenarios":"BeginStoryboardName points at a valid BeginStoryboard instance whose Storyboard property is null — e.g. the BeginStoryboard was constructed in code as new BeginStoryboard() with no Storyboard assigned, before the control action fires.","commonSituations":"Programmatic construction of BeginStoryboard objects without setting the Storyboard; a default/placeholder BeginStoryboard left in a resource dictionary or template.","solutions":["Assign a Storyboard to the BeginStoryboard (in XAML nest <Storyboard> as its child; in code set keyedBeginStoryboard.Storyboard).","Check that BeginStoryboardName references the intended BeginStoryboard, not an empty one.","If building in code, populate the Storyboard before invoking any control action."],"exampleFix":"// before\nvar begin = new BeginStoryboard();\n\n// after\nvar begin = new BeginStoryboard { Storyboard = (Storyboard)FindResource(\"myStoryboard\") };","handlingStrategy":"validation","validationCode":"bool ok = beginStoryboard?.Storyboard != null;","typeGuard":"static bool HasStoryboard(BeginStoryboard b) => b?.Storyboard != null;","tryCatchPattern":"try { storyboard = action.GetStoryboard(fe, fce, scope); } catch (InvalidOperationException ex) { /* handle missing/misconfigured BeginStoryboard */ }","preventionTips":["Never construct BeginStoryboard without a Storyboard child","When creating actions in code, set Storyboard first","Validate resource-dictionary BeginStoryboard entries are fully populated"],"tags":["wpf","storyboard","animation","null-reference"],"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"}