全部,
有人能告诉我为什么这个 KeyTime 告诉我它在运行时是一个负值吗?我已经删除了一些构建图像路径的逻辑。
public Storyboard CreateAnimationStoryBoard(DependencyObject dependencyObjectTarget,Image targetImage)
{
try
{
Storyboard sb = new Storyboard();
Storyboard.SetTarget(sb, dependencyObjectTarget);
Storyboard.SetTargetName(sb, targetImage.Name);
Storyboard.SetTargetProperty(sb, new PropertyPath(Image.SourceProperty));
ObjectAnimationUsingKeyFrames oaukf = new ObjectAnimationUsingKeyFrames();
oaukf.Duration = TimeSpan.FromSeconds(animationLength);
oaukf.BeginTime = new TimeSpan(0, 0, 0);
for (int i = startFrame; i <= endFrame; i++)
{
*build an animation string path here (hidden)*
Uri u;
Uri.TryCreate(animationString.ToString(), UriKind.RelativeOrAbsolute, out u);
BitmapImage bi = new BitmapImage(u);
DiscreteObjectKeyFrame dokf = new DiscreteObjectKeyFrame();
dokf.KeyTime = KeyTime.Uniform;
dokf.Value = bi;
oaukf.KeyFrames.Add(dokf);
}
sb.Children.Add(oaukf);
return sb;
}
现在,具体来说,在运行时,它告诉我“KeyFrame 对象上的 KeyTime 属性必须设置为非负 TimeSpan 值”。如果我更深入地研究变量,我不会得到更多的调试信息。我检查了位图是否为空,但它们不是。例如,我尝试设置自己的时间跨度(设置为 1 秒),但我得到了与上面相同的错误。
这一切都源于我在 WPF 中的一个类似功能,它以这种精确的方式构建故事板。两者的唯一区别是在 wpf 中 Keytime 设置为 KeyTime.PACED。由于 Silverlight 显然没有此选项,因此我使用了 Uniform 并遇到了此错误。有人可以阐明为什么在 Silverlight 中会发生这种情况,但在 WPF 中却完全可以正常工作吗?