WPFDatagridListBoxScrollViewer上下滚动(动画)

更新时间:2023-05-22 01:44:23 阅读: 评论:0

WPFDatagridListBoxScrollViewer上下滚动(动画)
采⽤属性动画的⽅式。由于动画绑定时需要绑定依赖属性,但ScrollViewer没有⽔平偏移和垂直偏移的依赖属性,所以需要通过附加属性的⽅式添加⽔平和垂直的依赖属性
public static class ScrollViewerBehavior
{
public static readonly DependencyProperty HorizontalOfftProperty = DependencyProperty.RegisterAttached("HorizontalOfft", typeof(double), typeof(ScrollViewerBehavior), new UIPropertyMetadata(0.0, OnHorizontalOfftChanged));
public static void SetHorizontalOfft(FrameworkElement target, double value) => target.SetValue(HorizontalOfftProperty, value);
public static double GetHorizontalOfft(FrameworkElement target) => (double)target.GetValue(HorizontalOfftProperty);
private static void OnHorizontalOfftChanged(DependencyObject target, DependencyPropertyChang
edEventArgs e) => (target as ScrollViewer)?.ScrollToHorizontalOfft((double)e.NewValue);
public static readonly DependencyProperty VerticalOfftProperty = DependencyProperty.RegisterAttached("VerticalOfft", typeof(double), typeof(ScrollViewerBehavior), new UIPropertyMetadata(0.0, OnVerticalOfftChanged));
public static void SetVerticalOfft(FrameworkElement target, double value) => target.SetValue(VerticalOfftProperty, value);
public static double GetVerticalOfft(FrameworkElement target) => (double)target.GetValue(VerticalOfftProperty);
private static void OnVerticalOfftChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) => (target as ScrollViewer)?.ScrollToVerticalOfft((double)e.NewValue);
}
xml 代码
<ScrollViewer HorizontalScrollBarVisibility="Disabled" Grid.Column="1" VerticalScrollBarVisibility="Hidden"
HorizontalAlignment="Stretch" x:Name="ScrollViewertest"  Margin="10,0,0,0" >
<!--填充控件-->
</ScrollViewer>
动画绑定,并开始动画
private Void ScrollViewerAnimation(int TotalCount)// TotalCount 共有多少条数据
  {
       int LineCount=5;//每⾏显⽰5条数据
      Storyboard storyboard = new Storyboard(); 
       TimeSpan ts = new TimeSpan(0, 0, 25);//向下滚动耗时
男生bmi标准double end = 200;; //向下滚动距离,可滚动数据源个数调整
DoubleAnimation TopToButtomAnimation = new DoubleAnimation();
TopToButtomAnimation.EasingFunction = new SineEa { EasingMode = EasingMode.EaInOut };//EasingMode:滚动⽅式
TopToButtomAnimation.From = 0;
TopToButtomAnimation.To = end;
TopToButtomAnimation.Duration = new Duration(ts);
TopToButtomAnimation.AutoRever = true; //ture:来回滚动,Fal:只向下滚动
TopToButtomAnimation.SpeedRatio = 1;//滚动速率
storyboard.Duration = new Duration(TimeSpan.FromSeconds(50));//上下滚动总时长
storyboard.Children.Add(TopToButtomAnimation);
        //动画绑定
Storyboard.SetTarget(TopToButtomAnimation, ScrollViewertest);
Storyboard.SetTargetName(TopToButtomAnimation, ScrollViewertest.Name);
Storyboard.SetTargetProperty(TopToButtomAnimation, new PropertyPath(ScrollViewerBehavior.VerticalOfftProperty));
storyboard.RepeatBehavior = RepeatBehavior.Forever; //循环滚动
storyboard.FillBehavior = FillBehavior.HoldEnd;
storyboard.Begin();
}     
List和DataGrid滚动都可以采取该⽅式,控制控件的ScrollViewer 进⾏滚动。
private childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
cad2013{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
成长的日子DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
return (childItem)child;
el
{
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
斓曦演过的电视剧}
return null;
}
张铁林舌吻<Listbox X:Name="_Listbox"/>
private void ListAnimation(int TotalCount)
{
scrollViewer = FindVisualChild<ScrollViewer>(this._Listbox);
    Storyboard storyboard = new Storyboard();
TimeSpan ts = new TimeSpan(0, 2, 0);形容书的成语
double end = 200;//滚动距离,可根据数据源个数调整冰箱英文
DoubleAnimation TopToButtomAnimation = new DoubleAnimation();
TopToButtomAnimation.EasingFunction = new SineEa { EasingMode = EasingMode.EaOut };
TopToButtomAnimation.From = 0;
TopToButtomAnimation.To = end;
TopToButtomAnimation.Duration = new Duration(ts);
TopToButtomAnimation.AutoRever = true;
TopToButtomAnimation.SpeedRatio = 1;
storyboard.Duration = new Duration(TimeSpan.FromMinutes(4));
storyboard.Children.Add(TopToButtomAnimation);
Storyboard.SetTarget(TopToButtomAnimation, scrollViewer);
Storyboard.SetTargetName(TopToButtomAnimation, scrollViewer.Name);
喝浓茶的好处和坏处Storyboard.SetTargetProperty(TopToButtomAnimation, new PropertyPath(ScrollViewerBehavior.VerticalOfftProperty));
storyboard.RepeatBehavior = RepeatBehavior.Forever;
storyboard.Begin();
}

本文发布于:2023-05-22 01:44:23,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/726377.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:滚动   属性   绑定   控件   动画   数据源   依赖
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图