private void SceneViewModel_StopHighlighting(object sender, HighlightItemEventArgs e)
 {
     Dispatcher.BeginInvoke(new Action(() =>
     {
         var item = items.FirstOrDefault(i => i.Value == e.HighlightableItem);
         if (item.Key != null)
         {
             item.Key.Opacity = .5;
         }
         storyBoard.Stop();
         storyBoard.Children.Clear();
     }), null);
 }
        private void SceneViewModel_HighlightItem(object sender, HighlightItemEventArgs e)
        {
            Dispatcher.BeginInvoke(new Action(() =>
            {
                Color?colorFrom = null;
                Color?colorTo   = null;
                if (e.PracticeItemResult == PracticeItemResult.Default)
                {
                    colorFrom = (Color)ColorConverter.ConvertFromString("#CC2700B9");
                    colorTo   = (Color)ColorConverter.ConvertFromString("#F665A505");
                }
                else if (e.PracticeItemResult == PracticeItemResult.Wrong)
                {
                    colorFrom = (Color)ColorConverter.ConvertFromString("#FCB90C00");
                    colorTo   = (Color)ColorConverter.ConvertFromString("#F6FF0051");
                }
                else if (e.PracticeItemResult == PracticeItemResult.Fixed)
                {
                    colorFrom = (Color)ColorConverter.ConvertFromString("#FCECE312");
                    colorTo   = (Color)ColorConverter.ConvertFromString("#DEDBDE26");
                }
                else if (e.PracticeItemResult == PracticeItemResult.Right)
                {
                    colorFrom = (Color)ColorConverter.ConvertFromString("#B92BB313");
                    colorTo   = (Color)ColorConverter.ConvertFromString("#FC0A770F");
                }

                var item         = items.FirstOrDefault(i => i.Value == e.HighlightableItem);
                item.Key.Opacity = 1;
                ColorAnimation colorAnimation = new ColorAnimation
                {
                    AutoReverse    = true,
                    Duration       = new Duration(TimeSpan.FromMilliseconds(500)),
                    RepeatBehavior = RepeatBehavior.Forever,
                    From           = colorFrom,
                    To             = colorTo
                };
                PropertyPath colorTargetPath = new PropertyPath("(Border.Background).(SolidColorBrush.Color)");
                storyBoard = new Storyboard();
                Storyboard.SetTarget(colorAnimation, item.Key);
                Storyboard.SetTargetProperty(colorAnimation, colorTargetPath);
                storyBoard.Children.Add(colorAnimation);
                storyBoard.Begin();
            }));
        }