gpt4 book ai didi

c# - 启动 Storyboard时未设置目标错误

转载 作者:行者123 更新时间:2023-11-30 17:51:23 26 4
gpt4 key购买 nike

我正在尝试将基于 XAML 的 Storyboard转换为代码隐藏,以便我可以同时在多个对象上使用 Storyboard的多个实例。我编写这个工厂方法来为我创建动画,但是当我启动 Storyboard 时,我似乎没有设置目标。有人可以帮助我吗,我还打算自学一种编写代码隐藏 Storyboard的有效方法。

public static Storyboard CreateSimpleTranslation(double x, double y, TimeSpan timespan, FrameworkElement target)
{
// original storyboard
//<Storyboard x:Name="MoveUp">
// <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
// Storyboard.TargetName="itemsControl">
// <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
// <EasingDoubleKeyFrame KeyTime="0:0:0.02" Value="-122">
// <EasingDoubleKeyFrame.EasingFunction>
// <CircleEase EasingMode="EaseIn"/>
// </EasingDoubleKeyFrame.EasingFunction>
// </EasingDoubleKeyFrame>
// </DoubleAnimationUsingKeyFrames>
//</Storyboard>

var newSB = new Storyboard();
var da1 = new DoubleAnimationUsingKeyFrames();
Storyboard.SetTargetProperty(da1, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateX)"));
var da2 = new DoubleAnimationUsingKeyFrames();
Storyboard.SetTargetProperty(da1, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateY)"));

var ed1 = new EasingDoubleKeyFrame
{
KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 0)),
Value = 0
};

var ed2 = new EasingDoubleKeyFrame
{
KeyTime = KeyTime.FromTimeSpan(timespan),
Value = x,
EasingFunction = new CircleEase() {EasingMode = EasingMode.EaseIn}
};

var ed3 = new EasingDoubleKeyFrame
{
KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 0)),
Value = 0
};

var ed4 = new EasingDoubleKeyFrame
{
KeyTime = KeyTime.FromTimeSpan(timespan),
Value = y,
EasingFunction = new CircleEase() {EasingMode = EasingMode.EaseIn}
};

da1.KeyFrames.Add(ed1);
da1.KeyFrames.Add(ed2);
da2.KeyFrames.Add(ed3);
da2.KeyFrames.Add(ed4);
newSB.Children.Add(da1);
newSB.Children.Add(da2);

Storyboard.SetTarget(da1, target);
Storyboard.SetTarget(da2, target);

return newSB;
}

最佳答案

尝试按照适合我的格式重新编码

public static Storyboard CreateSimpleTranslation(double x, double y, TimeSpan timespan, FrameworkElement target)
{
Storyboard storyboard = new Storyboard();

DoubleAnimationUsingKeyFrames da1 = new DoubleAnimationUsingKeyFrames();
var ed1 = new EasingDoubleKeyFrame
{
KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 0)),
Value = 0,
EasingFunction = new CircleEase() { EasingMode = EasingMode.EaseIn }
};
da1.KeyFrames.Add(ed1);

Storyboard.SetTarget(da1, target);
Storyboard.SetTargetProperty(da1, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateX)"));

storyboard.Children.Add(da1);
return storyboard;
}

关于c# - 启动 Storyboard时未设置目标错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com