当前位置: 首页 > wzjs >正文

广东建设工程交易中心网站自建网站做外贸的流程

广东建设工程交易中心网站,自建网站做外贸的流程,seo实战培训王乃用,做网站全自动cpa引流有时候我们在动态添加内容时,需要将滚动条滚动到指定内容处。 一般我们会调用ScrollViewer的ScrollToVerticalOffset(垂直方向)函数和ScrollToHorizontalOffset(水平方向)函数来控制滚动条滚动到指定位置。 正常滚动效…

有时候我们在动态添加内容时,需要将滚动条滚动到指定内容处。

一般我们会调用ScrollViewerScrollToVerticalOffset(垂直方向)函数和ScrollToHorizontalOffset(水平方向)函数来控制滚动条滚动到指定位置。

正常滚动效果

例如我们界面上有一个ListBox,我们想让滚动条滚动到指定项

XAML

 1 <Grid>2     <Grid.RowDefinitions>3         <RowDefinition/>4         <RowDefinition Height="35"/>5     </Grid.RowDefinitions>6 7     <ScrollViewer VerticalScrollBarVisibility="Auto" Name="scroll">8         <ListBox Name="list" Background="Transparent"></ListBox>9     </ScrollViewer>
10 
11     <Button Content="普通滚动" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Width="88" Click="Button_Click" Margin="-120,0,0,0"></Button>
12     <Button Content="平滑滚动" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Width="88" Click="Button_Click_1" Margin="120,0,0,0"></Button>
13 </Grid>

.cs

 1 //随机选中一项 2 Random r = new Random();3 var item = this.list.Items[r.Next(0, 50)];4 5 ListBoxItem listBoxItem = list.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;6 7 // 获取选择元素的位置8 Point position = listBoxItem.TranslatePoint(new Point(0, 0), list);9 
10 
11 //滚动到指定位置
12 this.scroll.ScrollToVerticalOffset(position.Y);
13 this.list.SelectedItem = item;

说明:ListBox提供了一个ScrollIntoView函数可以滚动到指定项,但是直接调用ScrollViewer的函数可以适用于所有出现滚动条的场景。

运行效果如下:

平滑滚动

一开始我想的是通过一个循环,缓动增加Y的位置,这样就达到了动画效果。这种方案是可行的,示例代码如下

 1 Random r = new Random();2 var item = this.list.Items[r.Next(0, 50)];3 4 ListBoxItem listBoxItem = list.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;5 6 // 获取选择元素的位置7 Point position = listBoxItem.TranslatePoint(new Point(0, 0), list);8 9 var gap = position.Y - this.scroll.VerticalOffset;
10 
11 //假设分5次
12 var tick = (int)(gap / 5);
13 int y = (int)this.scroll.VerticalOffset;
14 
15 for (int i = 0; i < 5; i++)
16 {
17     y += tick;
18     this.scroll.ScrollToVerticalOffset(y);
19     //缓慢滚动到指定位置
20     await Task.Delay(50);
21 }
22 
23 this.scroll.ScrollToVerticalOffset(position.Y);
24 
25 this.list.SelectedItem = item;

我们也可以借助WPF的Animation来做,这样效果会更好。

实现原理如下:

1、新建一个辅助类,里面定义一个附加属性

2、当这个附加属性的值更新时,我们去调用ScrollToVerticalOffset进行滚动

3、用ScrollViewer对这个附加属性进行动画

1、定义附加属性

1 public static class ScrollViewerHelper
2 {
3     public static readonly DependencyProperty VerticalOffsetProperty =
4         DependencyProperty.RegisterAttached(
5             "VerticalOffset",
6             typeof(double),
7             typeof(ScrollViewerHelper),
8             new PropertyMetadata(0.0, OnVerticalOffsetChanged));
9 }

2、当附加属性值更新时,调用ScrollToVerticalOffset进行滚动

1  private static void OnVerticalOffsetChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
2  {
3      if (d is ScrollViewer scrollViewer)
4      {
5          scrollViewer.ScrollToVerticalOffset((double)e.NewValue);
6      }
7  }

3、用ScrollViewer对这个附加属性进行动画

 1 DoubleAnimation animation = new DoubleAnimation2 {3     From = scrollViewer.VerticalOffset,4     To = targetOffset,5     Duration = TimeSpan.FromSeconds(durationInSeconds),6     EasingFunction = new QuadraticEase { EasingMode = EasingMode.EaseOut }7 };8 9 animation.Completed += (s, e) => scrollViewer.ScrollToVerticalOffset(targetOffset);
10 
11 scrollViewer.BeginAnimation(ScrollViewerHelper.VerticalOffsetProperty, animation);

演示效果

这里还可以进行一定的优化,可以让选中项始终居中。

示例代码

下载

http://www.dtcms.com/wzjs/583897.html

相关文章:

  • 福州企业网站建站系统美间在线设计平台
  • 网站定制费用下载搭建网站软件
  • 物流官方网站建设方案搜索引擎营销的主要方式有哪些?
  • 大连成久建设工程有限公司郑州seo顾问热狗hotdoger
  • 个人网站建设维护html开发软件
  • 网站推广的搜索引擎推广营销型网站设计建设公司
  • 广西建设工程协会网站公司团队建设
  • 教做宝宝衣服的网站网站建设过程总结报告
  • 晋江网站建设企业云南省网站建设
  • 网站背景图片优化长春网站建设培训班
  • 大连企业名录大全赤峰网站优化
  • 网站卖给别人后做违法信息wordpress多主题插件下载地址
  • 没有备案的网站百度能收录网站做游戏活动
  • 营业执照 网站开发旅游网站设计参考文献
  • 英文外贸商城网站设计百度蜘蛛网站
  • 烟台市住房和城乡建设厅网站校园网站建设教程视频
  • 邮票上的化学史网站开发网站的设计特点有哪些
  • 关于网站推广十大导航软件
  • 建立英文网站投资公司经营范围有哪些内容
  • 福建省建设监理网官方网站做机械设计的要知道哪些网站
  • 北京做网站比较好的公司最近五天的新闻大事
  • 江都建设银行网站关键词优化是怎么做的
  • 建设交易网站多少钱保定网站电话
  • 重庆网站的网络推广在网上注册公司的流程
  • 霸州市建设局网站哔哩哔哩在线看免费观看视频
  • 网站建设企业模板哪家好建网站多少钱 万户
  • 网站域名注册步骤有免费的网站做农家院宣传
  • 简单网站开发完美代码网站
  • 一个小型购物网站开发企业手机网站建设策划方案
  • 阳信住房和城乡建设厅网站上海传媒公司名字