private static void onIdChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { Storyboard sb = obj as Storyboard; if (sb == null) { return; } string key = e.NewValue as string; if (key == null) { return; } if (storyboards.ContainsKey(key)) { return; } sb.Completed += delegate(object sender, EventArgs args) { StoryboardInfo info = storyboards[key]; if (info.Callback != null) { info.Callback(); } }; storyboards[key] = new StoryboardInfo() { Storyboard = sb, Callback = null }; }