Files
aistudio-wpf-diagram/AIStudio.Wpf.DiagramDesigner/ViewModels/AdditionViewModel/AnimationViewModel.cs
2023-05-01 00:10:55 +08:00

122 lines
2.9 KiB
C#

using System;
using System.Windows.Media;
namespace AIStudio.Wpf.DiagramDesigner
{
[Serializable]
public class AnimationViewModel : BindableBase, IAnimationViewModel
{
private LineAnimation _animation = LineAnimation.None;
[CanDo]
public LineAnimation Animation
{
get
{
return _animation;
}
set
{
SetProperty(ref _animation, value);
}
}
private double _duration = 1;
[CanDo]
public double Duration
{
get
{
return _duration;
}
set
{
SetProperty(ref _duration, value);
}
}
private Color _color = Colors.Red;
[CanDo]
public Color Color
{
get
{
return _color;
}
set
{
if (!SetProperty(ref _color, value))
{
RaisePropertyChanged(nameof(Color));
}
}
}
private ISharpPath _animationPath = SharpPath.Circle;
public ISharpPath AnimationPath
{
get
{
return _animationPath;
}
set
{
if (_animationPath != value)
{
if (_animationPath != null && _animationPath is SharpPath _sharpPath1)
{
_sharpPath1.PropertyChanged -= AnimationViewModel_PropertyChanged;
}
SetProperty(ref _animationPath, value);
if (_animationPath != null && _animationPath is SharpPath _sharpPath2)
{
_sharpPath2.PropertyChanged += AnimationViewModel_PropertyChanged;
}
}
else
{
RaisePropertyChanged(nameof(AnimationPath));
}
}
}
private bool _repeat = true;
public bool Repeat
{
get
{
return _repeat;
}
set
{
SetProperty(ref _repeat, value);
}
}
private bool _start;
public bool Start
{
get
{
return _start;
}
set
{
SetProperty(ref _start, value);
}
}
public int Completed
{
get; set;
}
private void AnimationViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (sender == AnimationPath)
{
RaisePropertyChanged(nameof(AnimationPath));
}
}
}
}