自定义「属性故事面板」与「属性设置动画」
This commit is contained in:
46
RazorEngineTest/PropertyStoryboard.cs
Normal file
46
RazorEngineTest/PropertyStoryboard.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Media.Animation;
|
||||
|
||||
namespace RazorEngineTest
|
||||
{
|
||||
public class PropertyStoryboard : Storyboard
|
||||
{
|
||||
private readonly SetterBaseCollection _setters = new SetterBaseCollection();
|
||||
|
||||
public SetterBaseCollection Setters => _setters;
|
||||
public new void Begin()
|
||||
{
|
||||
base.Begin();
|
||||
ApplyPropertySetters();
|
||||
}
|
||||
|
||||
private void ApplyPropertySetters()
|
||||
{
|
||||
foreach (SetterBase setterBase in _setters)
|
||||
{
|
||||
if (setterBase is Setter setter && GetTarget(setter.TargetName) is DependencyObject targetObject)
|
||||
{
|
||||
DependencyProperty property = setter.Property;
|
||||
object value = setter.Value;
|
||||
|
||||
if (property != null)
|
||||
{
|
||||
targetObject.SetValue(property, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 快捷添加Setter的方法
|
||||
public void AddSetter(DependencyProperty property, object value)
|
||||
{
|
||||
_setters.Add(new Setter(property, value));
|
||||
}
|
||||
public DependencyObject GetTarget(string targetName) => throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user