Я считаю, что это связано с тем, что с вашим кодом не существует отношения, созданного между часами анимации Storyboard и Text DependencyProperty TextBlock. если бы я должен был догадаться, я бы сказал, когда Раскадровка собиралась, это было в несколько случайное время из-за загрязнения потоком обновления DependencyProperty (TextBlock.Text - DependencyProperty). Создание такой ассоциации, как показано ниже (или RunTimeline или RunStoryboard будет работать, но показывают альтернативные способы смотреть на это):
public partial class Window1 : Window
{
Storyboard a = new Storyboard();
StringAnimationUsingKeyFrames timeline = new StringAnimationUsingKeyFrames();
DiscreteStringKeyFrame keyframe = new DiscreteStringKeyFrame();
int i;
public Window1()
{
InitializeComponent();
//RunTimeline();
RunStoryboard();
}
private void RunTimeline()
{
timeline.SetValue(Storyboard.TargetPropertyProperty, new PropertyPath("(TextBlock.Text)"));
timeline.Completed += timeline_Completed;
timeline.Duration = new Duration(TimeSpan.FromMilliseconds(10));
textblock.BeginAnimation(TextBlock.TextProperty, timeline);
}
private void RunStoryboard()
{
timeline.SetValue(Storyboard.TargetPropertyProperty, new PropertyPath("(TextBlock.Text)"));
a.Children.Add(timeline);
a.Completed += a_Completed;
a.Duration = new Duration(TimeSpan.FromMilliseconds(10));
a.Begin(textblock);
}
void timeline_Completed(object sender, EventArgs e)
{
textblock.Text = (++i).ToString();
textblock.BeginAnimation(TextBlock.TextProperty, timeline);
}
void a_Completed(object sender, EventArgs e)
{
textblock.Text = (++i).ToString();
a.Begin(textblock);
}
}
Это работает для меня, пока я позволил бы ей работать (~ 10 раз дольше это когда-либо брало, чтобы победить иначе).
Tim
Очень интересная проблема, я обнаружил, что это останавливается, когда моя мышь перемещается над TextBlock. Иногда я получаю 1500. – 2008-11-24 21:18:36