/// <summary> /// Executed when node is moved. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="Palmmedia.WpfGraph.UI.ViewModels.NodeMovedEventArgs"/> instance containing the event data.</param> protected virtual void NodeMoved(object sender, NodeMovedEventArgs e) { if (e.Duration > 0) { var transAnimationX = new DoubleAnimation(); transAnimationX.Duration = TimeSpan.FromMilliseconds(e.Duration); transAnimationX.From = this.TranslateTransform.OffsetX; transAnimationX.To = e.NewPosition.X; transAnimationX.FillBehavior = FillBehavior.Stop; var transAnimationY = new DoubleAnimation(); transAnimationY.Duration = TimeSpan.FromMilliseconds(e.Duration); transAnimationY.From = this.TranslateTransform.OffsetY; transAnimationY.To = e.NewPosition.Y; transAnimationY.FillBehavior = FillBehavior.Stop; var transAnimationZ = new DoubleAnimation(); transAnimationZ.Duration = TimeSpan.FromMilliseconds(e.Duration); transAnimationZ.From = this.TranslateTransform.OffsetZ; transAnimationZ.To = e.NewPosition.Z; transAnimationZ.FillBehavior = FillBehavior.Stop; transAnimationZ.Completed += new EventHandler((s, a) => this.ApplyPosition(e.NewPosition, e.Callback)); this.TranslateTransform.BeginAnimation(TranslateTransform3D.OffsetXProperty, transAnimationX); this.TranslateTransform.BeginAnimation(TranslateTransform3D.OffsetYProperty, transAnimationY); this.TranslateTransform.BeginAnimation(TranslateTransform3D.OffsetZProperty, transAnimationZ); } else { this.ApplyPosition(e.NewPosition, e.Callback); } }
/// <summary> /// Raises the Moved event. /// </summary> /// <param name="e"></param> protected virtual void RaiseMoved(NodeMovedEventArgs e) { Moved.Raise(this, e); }