private void ToDoItemDeletedAction(FrameworkElement deletedElement)
        {
            _deleteSound.Play();

              var trans = deletedElement.GetHorizontalOffset().Transform;
              trans.Animate(trans.X, -(deletedElement.ActualWidth + 50),
                    TranslateTransform.XProperty, 300, 0, new SineEase()
                    {
                      EasingMode = EasingMode.EaseOut
                    },
              () =>
              {
            // find the model object that was deleted
            ToDoItemViewModel deletedItem = deletedElement.DataContext as ToDoItemViewModel;

            // determine how much we have to 'shuffle' up by
            double elementOffset = -deletedElement.ActualHeight;

            // find the items in view, and the location of the deleted item in this list
            var itemsInView = _todoList.GetItemsInView().ToList();
            var lastItem = itemsInView.Last();
            int startTime = 0;
            int deletedItemIndex = itemsInView.Select(i => i.DataContext)
                                          .ToList().IndexOf(deletedItem);

            // iterate over each item
            foreach (FrameworkElement element in itemsInView.Skip(deletedItemIndex))
            {
              // for the last item, create an action that deletes the model object
              // and re-renders the list
              Action action = null;
              if (element == lastItem)
              {
            action = () =>
            {
              // clone the list
              _todoItems.Remove(deletedItem);

              // re-populate our ObservableCollection
              _todoItems.Reset();
            };
              }

              // shuffle this item up
              TranslateTransform elementTrans = new TranslateTransform();
              element.RenderTransform = elementTrans;
              elementTrans.Animate(0, elementOffset, TranslateTransform.YProperty, 200, startTime, null, action);
              startTime += 10;
            }
              });
        }
        private void ToDoItemBounceBack(FrameworkElement fe)
        {
            var trans = fe.GetHorizontalOffset().Transform;

              trans.Animate(trans.X, 0, TranslateTransform.XProperty, 300, 0, new BounceEase()
              {
            Bounciness = 5,
            Bounces = 2
              });
        }