All
Может кто-нибудь сказать мне, почему этот 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 объекта KeyFrame должно быть установлено неотрицательное значение TimeSpan». Если я углублюсь в переменную немного глубже, я больше не получу отладочную информацию. Я проверил, являются ли растровые изображения нулевыми, а они нет. Например, я попытался установить свой собственный временной интервал (до 1 секунды), и я получаю ту же ошибку, что и выше.
Все это происходит от аналогичной функции, которая есть у меня в WPF, которая точно создает раскадровку. Единственное различие между ними заключается в том, что для Keytime установлено значение KeyTime.PACED в wpf. Поскольку Silverlight, по-видимому, не имеет этой опции, я использовал Uniform и столкнулся с этой ошибкой. Может кто-нибудь пролить свет на то, почему это происходит в Silverlight, но работает совершенно нормально в WPF?