为 a 中的滚动设置动画ScrollViewer
似乎是一项常见任务。我使用计时器实现了它,类似于在此处找到的方法。这种方法效果很好,非常流畅,看起来很完美。
然而,现在我中包含的对象的复杂性和数量ScrollViewer
增加了,动画看起来非常生涩。我觉得这很奇怪,因为如果我手动滚动它就可以正常工作。
public void ShiftLeft(int speed = 11)
{
CustomTimer timer = new CustomTimer(); //DispatchTimer with "life"
timer.Interval = new TimeSpan(0, 0, 0, 0, 5);
timer.Tick += ((sender, e) =>
{
scrollViewer1.ScrollToHorizontalOffset(
scrollViewer1.HorizontalOffset - (scrollViewer1.ScrollableWidth / (gridColumnCount - 3) / speed));
if (scrollViewer1.HorizontalOffset == 0) //cant scroll any more
((CustomTimer)sender).Stop();
((CustomTimer)sender).life++;
if (((CustomTimer)sender).life >= speed) //reached destination
((CustomTimer)sender).Stop();
});
timer.Start();
}
我的方法是否有问题导致这种奇怪的抽搐?知道如何解决吗?