C# 使用普通滚动动画滚动到Scrollviewer中的某个位置

C# 使用普通滚动动画滚动到Scrollviewer中的某个位置,c#,xaml,windows-8,microsoft-metro,scrollview,C#,Xaml,Windows 8,Microsoft Metro,Scrollview,我有一个带有滚动查看器的metro风格的应用程序。现在我想滚动到用户单击按钮时的位置。我试过: MainScrollViewer.ScrollToHorizontalOffset(x); 但它很快就“跳”到了那里。我想要一个平滑的动画到x。没有现成的API可以让你做到这一点。 也没有可以用动画作为目标的属性。 您需要使用基于帧的动画(基本上确定您在时间轴中的位置以及在每个CompositionTarget.Rendering事件上的位置-更新偏移)或者创建一个附加的依赖项属性,当其值更改时调

我有一个带有滚动查看器的metro风格的应用程序。现在我想滚动到用户单击按钮时的位置。我试过:

 MainScrollViewer.ScrollToHorizontalOffset(x);

但它很快就“跳”到了那里。我想要一个平滑的动画到x。没有现成的API可以让你做到这一点。 也没有可以用动画作为目标的属性。
您需要使用基于帧的动画(基本上确定您在时间轴中的位置以及在每个CompositionTarget.Rendering事件上的位置-更新偏移)或者创建一个附加的依赖项属性,当其值更改时调用ScrollToHorizontalOffset,并使用动画将该属性作为目标。

没有现成的API允许您这样做。 也没有可以用动画作为目标的属性。
您需要使用基于帧的动画(基本上确定您在时间轴中的位置以及在每个CompositionTarget.Rendering事件上的位置-更新偏移)或者创建一个附加的依赖属性,该属性在其值更改时调用ScrollToHorizontalOffset,并使用动画将该属性作为目标。

您可以创建一个异步运行的方法,并具有一个递增ScrollToHorizontalOffset(int x)的计时器


假设每500毫秒增加10像素。

您可以创建一个异步运行的方法,并且有一个计时器,可以增加ScrollToHorizontalOffset(int x)


假设每500毫秒增加10像素。

你取笑我,因为我一直想创建这些方法,但由于自定义依赖项属性动画的限制,结果比预期的更难。检查中的。你取笑我,因为我一直想创建这些方法,但由于自定义依赖项属性动画设置的限制,结果比预期的要困难。请在中检查。