所有
有人能告诉我为什么这个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中以类似的方式构建故事板的类似功能。两者的唯一区别是Keytime在wpf中设置为KeyTime.PACED。由于Silverlight显然没有这个选项,我使用Uniform并遇到了这个错误。有人可以解释为什么在Silverlight中发生这种情况,但在WPF中完全正常吗?
答案 0 :(得分:0)
您对Keytime变量的使用有点偏离:
在设置关键帧时,请说明可见性,请使用:
DiscreteObjectKeyFrame kf = new DiscreteObjectKeyFrame();
kf.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(1000));
kf.Value = Visibility.Visible;