ListBoxのスクロールをどのようにアニメーション化できますか?私はscrollIntoViewを使用することができますが、どのように私はそれをアニメーションできますか?あるリストボックスアイテムから別のリストボックスアイテムに移動するには、矢印キーを押したいと思います。スクロールアニメーション
答えて
は、次のリンク
http://aniscrollviewer.codeplex.com/
と同じアプローチに基づいラフ実装ですVerticalOffset
プロパティは読み取り専用ですので、代わりにあなたが順番にScrollToVerticalOffset
を行いScrollViewer
に添付プロパティVerticalOffset
を使用することができます。このアタッチされたプロパティはアニメ化できます。
ItemsControl
の拡張方法を作成してAnimateScrollIntoView
とすることもできます。
この
listBox.AnimateScrollIntoView(yourItem);
ScrollViewerBehavior
public class ScrollViewerBehavior
{
public static DependencyProperty VerticalOffsetProperty =
DependencyProperty.RegisterAttached("VerticalOffset",
typeof(double),
typeof(ScrollViewerBehavior),
new UIPropertyMetadata(0.0, OnVerticalOffsetChanged));
public static void SetVerticalOffset(FrameworkElement target, double value)
{
target.SetValue(VerticalOffsetProperty, value);
}
public static double GetVerticalOffset(FrameworkElement target)
{
return (double)target.GetValue(VerticalOffsetProperty);
}
private static void OnVerticalOffsetChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
{
ScrollViewer scrollViewer = target as ScrollViewer;
if (scrollViewer != null)
{
scrollViewer.ScrollToVerticalOffset((double)e.NewValue);
}
}
}
ItemsControlExtensions
public static class ItemsControlExtensions
{
public static void AnimateScrollIntoView(this ItemsControl itemsControl, object item)
{
ScrollViewer scrollViewer = VisualTreeHelpers.GetVisualChild<ScrollViewer>(itemsControl);
UIElement container = itemsControl.ItemContainerGenerator.ContainerFromItem(item) as UIElement;
int index = itemsControl.ItemContainerGenerator.IndexFromContainer(container);
double toValue = scrollViewer.ScrollableHeight * ((double)index/itemsControl.Items.Count);
Point relativePoint = container.TranslatePoint(new Point(0.0, 0.0), Window.GetWindow(container));
DoubleAnimation verticalAnimation = new DoubleAnimation();
verticalAnimation.From = scrollViewer.VerticalOffset;
verticalAnimation.To = toValue;
verticalAnimation.DecelerationRatio = .2;
verticalAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
Storyboard storyboard = new Storyboard();
storyboard.Children.Add(verticalAnimation);
Storyboard.SetTarget(verticalAnimation, scrollViewer);
Storyboard.SetTargetProperty(verticalAnimation, new PropertyPath(ScrollViewerBehavior.VerticalOffsetProperty));
storyboard.Begin();
}
}
のようにそれを呼び出して、あなたはまた、0123のホールドを取得する必要がありますので、この
public static class VisualTreeHelpers
{
public static T GetVisualChild<T>(DependencyObject parent) where T : Visual
{
T child = default(T);
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
child = v as T;
if (child == null)
{
child = GetVisualChild<T>(v);
}
if (child != null)
{
break;
}
}
return child;
}
}
このarticleを見ると、スクロールアニメーションやタッチジェスチャーのアニメーションの仕組みが説明されています。ページの下部にあるソースをダウンロードし、WpfScrollContentソリューションを確認します。 WPFリストボックスを拡張してスクロールアニメーションを追加すると、コントロールを再利用できます。ここで
壊れたリンクが必要になります.... – patrickbadley
2年以上も前に投稿...リンクだけを含んでいない回答は落胆している正確な理由です – evanb
@evanb。 –
- 1. 縦スクロールアニメーション
- 2. 角4 - スクロールアニメーション
- 3. 両方向にスクロールアニメーション
- 4. jQuery - セクションページへのスクロールアニメーション
- 5. スクロールアニメーションを閉じた後にスクロールする
- 6. Androidのスクロールアニメーションをオフにする
- 7. 対応するスクロールアニメーションを処理する
- 8. jQueryでのスクロールアニメーションの自動化
- 9. CSS3のスクロールアニメーションが機能しない
- 10. 古代のメッセージをスクロールアニメーションのアイデア
- 11. スクロールアニメーションが機能しません
- 12. CSSでスクロールアニメーションを作成する
- 13. mCustomScrollbarスクロールアニメーションを無効にする
- 14. Greensockを使用したスクロールアニメーションの問題
- 15. RecyclerViewのスクロールアニメーションを無効にする
- 16. iOS上での垂直スクロールアニメーション「ジャンプ」
- 17. マックブック網膜でスクロールアニメーションが機能しない
- 18. 物理スクロールアニメーション(タッチ)を使用したScrollviewer論理スクロール
- 19. ReactはjQueryのようなスクロールアニメーションを持っていますか?
- 20. GSAPを使用したスクロールアニメーションについて
- 21. UIPickerViewはスクロールアニメーションが終了するまでスクロールします
- 22. jQueryスクロールアニメーションを特定の位置に移動
- 23. スクロールアニメーション(jQuery.appear.js)中のスクロールトリガーを禁止しますか?使用
- 24. スクロールアニメーションが停止していませんか?
- 25. シンプルなスクロールアニメーションを反応ネイティブで作業するには
- 26. Mac OS X LionのWebViewでスクロールアニメーションを無効にしますか?
- 27. Android ScrollViewはスクロールアニメーションの終わりを検出します
- 28. Google Chrome:Windowsのブラウザでスクロールアニメーションが機能しない
- 29. スクロールアニメーションが無効になっていないのはなぜですか?
- 30. スクロールアニメーションを停止するように見えない、解決の問題。 | CSS&HTML
水平にスクロールしたい場合、animation.toの値は何ですか? – Cobold
コードにエラーがある可能性があります。 'scrollViewer.ScrollableHeight *((double)index/itemsControl.Items.Count); ' は である必要があります。' scrollViewer.ScrollableHeight *((double)index /(itemsControl.Items.Count -1));リストには12個の要素が含まれていると私は最後の1(指数11)までスクロールしたい場合は、 '例えば は、結果はゼロによる除算の用心、 'も* 1 ' をscrollViewer.ScrollableHeightになることがあります。 ) – sim1
@ sim1:これは長い間見ていないので、私はあなたが正しいと確信しています。アップデートありがとう: –