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
            };
        }