1
全部,KeyFrame对象上的KeyTime属性必须设置为非负的TimeSpan值?
有人能告诉我为什么这个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;
}
现在,特别是在运行时,它告诉我,“关键帧对象KeyTime属性必须被设置为一个非负的时间跨度值”。如果我在变量中进一步深入一点,我就没有进一步的调试信息。我已检查位图是否为空,哪些不是。例如,我尝试设置我自己的时间范围(以1秒为单位),并得到与上述相同的错误。
这一切都源于我在WPF中以这种确切方式构建故事板的类似功能。两者的唯一区别在于KeyTime在wpf中设置为KeyTime.PACED。由于Silverlight显然没有这个选项,所以我使用了Uniform并且遇到了这个错误。有人可以解释为什么Silverlight会发生这种情况,但在WPF中工作得很好吗?