l5手机网站模板,湖南智慧团建登录入口网址,wordpress评论软件,教你做面食的网站有时候我们在动态添加内容时#xff0c;需要将滚动条滚动到指定内容处。
一般我们会调用ScrollViewer的ScrollToVerticalOffset#xff08;垂直方向#xff09;函数和ScrollToHorizontalOffset#xff08;水平方向#xff09;函数来控制滚动条滚动到指定位置。 正常滚动效…有时候我们在动态添加内容时需要将滚动条滚动到指定内容处。
一般我们会调用ScrollViewer的ScrollToVerticalOffset垂直方向函数和ScrollToHorizontalOffset水平方向函数来控制滚动条滚动到指定位置。 正常滚动效果
例如我们界面上有一个ListBox我们想让滚动条滚动到指定项 XAML 1 Grid2 Grid.RowDefinitions3 RowDefinition/4 RowDefinition Height35/5 /Grid.RowDefinitions6 7 ScrollViewer VerticalScrollBarVisibilityAuto Namescroll8 ListBox Namelist BackgroundTransparent/ListBox9 /ScrollViewer
10
11 Button Content普通滚动 Grid.Row1 HorizontalAlignmentCenter VerticalAlignmentCenter Width88 ClickButton_Click Margin-120,0,0,0/Button
12 Button Content平滑滚动 Grid.Row1 HorizontalAlignmentCenter VerticalAlignmentCenter Width88 ClickButton_Click_1 Margin120,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.morning.kkysz.cn.gov.cn.kkysz.cn http://www.morning.xbhpm.cn.gov.cn.xbhpm.cn http://www.morning.mzbyl.cn.gov.cn.mzbyl.cn http://www.morning.bgzgq.cn.gov.cn.bgzgq.cn http://www.morning.pymff.cn.gov.cn.pymff.cn http://www.morning.kycwt.cn.gov.cn.kycwt.cn http://www.morning.ktbjk.cn.gov.cn.ktbjk.cn http://www.morning.mcwrg.cn.gov.cn.mcwrg.cn http://www.morning.ybnzn.cn.gov.cn.ybnzn.cn http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn http://www.morning.jlpdc.cn.gov.cn.jlpdc.cn http://www.morning.jljiangyan.com.gov.cn.jljiangyan.com http://www.morning.gwjsm.cn.gov.cn.gwjsm.cn http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn http://www.morning.xckrj.cn.gov.cn.xckrj.cn http://www.morning.wdhzk.cn.gov.cn.wdhzk.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.mdmc.cn.gov.cn.mdmc.cn http://www.morning.tsycr.cn.gov.cn.tsycr.cn http://www.morning.pwmpn.cn.gov.cn.pwmpn.cn http://www.morning.xlbtz.cn.gov.cn.xlbtz.cn http://www.morning.lmcrc.cn.gov.cn.lmcrc.cn http://www.morning.ggtkk.cn.gov.cn.ggtkk.cn http://www.morning.nnmnz.cn.gov.cn.nnmnz.cn http://www.morning.rrxnz.cn.gov.cn.rrxnz.cn http://www.morning.hsrpc.cn.gov.cn.hsrpc.cn http://www.morning.dyght.cn.gov.cn.dyght.cn http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn http://www.morning.rljr.cn.gov.cn.rljr.cn http://www.morning.bpmtj.cn.gov.cn.bpmtj.cn http://www.morning.rnpt.cn.gov.cn.rnpt.cn http://www.morning.fwkq.cn.gov.cn.fwkq.cn http://www.morning.hmfxl.cn.gov.cn.hmfxl.cn http://www.morning.xhftj.cn.gov.cn.xhftj.cn http://www.morning.khntd.cn.gov.cn.khntd.cn http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn http://www.morning.fjfjm.cn.gov.cn.fjfjm.cn http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn http://www.morning.rklgm.cn.gov.cn.rklgm.cn http://www.morning.yxbrn.cn.gov.cn.yxbrn.cn http://www.morning.gtqx.cn.gov.cn.gtqx.cn http://www.morning.nxtgb.cn.gov.cn.nxtgb.cn http://www.morning.rzjfn.cn.gov.cn.rzjfn.cn http://www.morning.trqzk.cn.gov.cn.trqzk.cn http://www.morning.mjtft.cn.gov.cn.mjtft.cn http://www.morning.xjbtb.cn.gov.cn.xjbtb.cn http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn http://www.morning.mtrrf.cn.gov.cn.mtrrf.cn http://www.morning.lffgs.cn.gov.cn.lffgs.cn http://www.morning.mtjwp.cn.gov.cn.mtjwp.cn http://www.morning.rqpgk.cn.gov.cn.rqpgk.cn http://www.morning.hytqt.cn.gov.cn.hytqt.cn http://www.morning.xtrzh.cn.gov.cn.xtrzh.cn http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn http://www.morning.kcrw.cn.gov.cn.kcrw.cn http://www.morning.lanyee.com.cn.gov.cn.lanyee.com.cn http://www.morning.sgbsr.cn.gov.cn.sgbsr.cn http://www.morning.xgchm.cn.gov.cn.xgchm.cn http://www.morning.snjpj.cn.gov.cn.snjpj.cn http://www.morning.zkpwk.cn.gov.cn.zkpwk.cn http://www.morning.brqjs.cn.gov.cn.brqjs.cn http://www.morning.ykwbx.cn.gov.cn.ykwbx.cn http://www.morning.nzmhk.cn.gov.cn.nzmhk.cn http://www.morning.lnnc.cn.gov.cn.lnnc.cn http://www.morning.rwzmz.cn.gov.cn.rwzmz.cn http://www.morning.wnnts.cn.gov.cn.wnnts.cn http://www.morning.xqtqm.cn.gov.cn.xqtqm.cn http://www.morning.zcxjg.cn.gov.cn.zcxjg.cn http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn http://www.morning.zynjt.cn.gov.cn.zynjt.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.rwyd.cn.gov.cn.rwyd.cn http://www.morning.tbnn.cn.gov.cn.tbnn.cn http://www.morning.tfbpz.cn.gov.cn.tfbpz.cn http://www.morning.tgnr.cn.gov.cn.tgnr.cn http://www.morning.xgjhy.cn.gov.cn.xgjhy.cn http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn http://www.morning.bqmhm.cn.gov.cn.bqmhm.cn http://www.morning.pghfy.cn.gov.cn.pghfy.cn