WPF滚动条自动下拉实现

WPF虽然很灵活,但是很多控件功能都需要自己实现。
例如通常软件UI的运行记录,不管用TextBox或者ListBox,还是其他,自动下拉到最后一条的功能都要自己去实现
假设使用ListBox

  1. 首先把ListBox 嵌入到ScrollViewer,如下
 <ScrollViewer HorizontalScrollBarVisibility="Auto"><ListBox HorizontalContentAlignment="Left"/></ScrollViewer>
  1. 给ScrollViewer的增加一个扩展属性AlwaysScrollToEnd,需要在工程中新增一个类,如下
 public class ScrollViewerExtensions{public static readonly DependencyProperty AlwaysScrollToEndProperty = DependencyProperty.RegisterAttached("AlwaysScrollToEnd", typeof(bool), typeof(ScrollViewerExtensions), new PropertyMetadata(false, AlwaysScrollToEndChanged));private static bool _autoScroll;private static void AlwaysScrollToEndChanged(object sender, DependencyPropertyChangedEventArgs e){ScrollViewer scroll = sender as ScrollViewer;if (scroll != null){bool alwaysScrollToEnd = (e.NewValue != null) && (bool)e.NewValue;if (alwaysScrollToEnd){scroll.ScrollToEnd();scroll.ScrollChanged += ScrollChanged;// scroll.SizeChanged += Scroll_SizeChanged;}else { scroll.ScrollChanged -= ScrollChanged; /*scroll.ScrollChanged -= ScrollChanged; */}}else { throw new InvalidOperationException("The attached AlwaysScrollToEnd property can only be applied to ScrollViewer instances."); }}public static bool GetAlwaysScrollToEnd(ScrollViewer scroll){if (scroll == null) { throw new ArgumentNullException("scroll"); }return (bool)scroll.GetValue(AlwaysScrollToEndProperty);}public static void SetAlwaysScrollToEnd(ScrollViewer scroll, bool alwaysScrollToEnd){if (scroll == null) { throw new ArgumentNullException("scroll"); }scroll.SetValue(AlwaysScrollToEndProperty, alwaysScrollToEnd);}private static void ScrollChanged(object sender, ScrollChangedEventArgs e){ScrollViewer scroll = sender as ScrollViewer;if (scroll == null) { throw new InvalidOperationException("The attached AlwaysScrollToEnd property can only be applied to ScrollViewer instances."); }if (e.ExtentHeightChange == 0) { _autoScroll = scroll.VerticalOffset == scroll.ScrollableHeight; }if (_autoScroll && e.ExtentHeightChange != 0) { scroll.ScrollToVerticalOffset(scroll.ExtentHeight); }}}
  1. 很重要的一步,要先将工程编译,然后就可以轻松愉快的使用这个自动下拉到最后一条的属性了,不得不感叹WPF的强大!如下所示
     <ScrollViewer local:ScrollViewerExtensions.AlwaysScrollToEnd="True" HorizontalScrollBarVisibility="Auto"><ListBox  HorizontalContentAlignment="Left"/></ScrollViewer>
  1. 完事了,后面其他的TextBox也依葫芦画瓢,一样能使用,记录并分享一下

WPF滚动条自动下拉实现相关推荐

  1. html滚动条自动下拉,[JS] jquery实现div随滚动条下拉浮动功能

    1.简介 div浮动,当滚动条下拉时,将div浮动到固定位置上. 2.实现 引用jquery.js略 1.html div加id="float".如 浮动内容 2.css 样式.d ...

  2. ajax下拉列表模糊,JS仿百度自动下拉框模糊匹配提示

    实际项目中,我们可以把数据获取改成ajax动态获取,在 getContent()中 js/jQuery实现类似百度搜索功能 #container { position: absolute; left: ...

  3. html 仿京东收起展开,网页顶部自动下拉/收缩广告代码(仿京东)

    [javascript]代码库 网页顶部自动下拉/收缩广告代码(仿京东) var intervalId = null; function slideAd(id, nStayTime, sState, ...

  4. 模拟百度的自动下拉提示框

    最近开始接触AJAX,最初以为是一种很新很时髦的技术,等学习了一段时间后, 发现不过是一些老技术的结合.最重要的就是XMLHttpRequest对象(JS) 正所谓学以致用,今天突发灵感,觉得百度的自 ...

  5. vue怎么取消按回车下拉框自动下拉_八月更新第二版,小视频自动竖屏全屏播放,失效校验再次升级!...

    新方圆小棉袄,传说中的贴心小棉袄,宇宙无敌超级厉害. 记住我们的付费群(大佬众多):978260150,免费群:1101359539 1.方圆和海阔的规则导入和支付宝口令类似,将口令全部复制打开最新版 ...

  6. vue如何取消下拉框按回车自动下拉_按逗号拆分Excel单元格,再分离中文数字,春节压岁钱统计就用它...

    大家春节好! 大年三十还在坚持更新的小编估计也没几个了. 今天这篇推送,是为了趁热打铁,教大家统计萌娃们收到的压岁钱.具体要求是:按分隔符将一个单元格拆分成多个,且分离中文和数字,并且转置成竖向表格. ...

  7. layui select框代码实现自动下拉

    因为项目有个字段需要根据输入匹配类似选项通过下拉框表现出来,然后点击选择... 项目使用的layui框架,这个框架有个缺点就是一些H5标签使不上用场,比如datalist...,所以只能尝试寻找它自带 ...

  8. vue如何取消下拉框按回车自动下拉_如何用大白菜重装系统|大白菜怎么重装系统教程详解...

    我们在电脑出现崩溃故障的问题时,都会通过重装系统解决,现在重装系统很方便,比如用大白菜做成的启动U盘就可以重装系统,很多人还不知道怎么用大白菜重装系统,接下来系统城小编就跟大家介绍大白菜怎么重装系统的 ...

  9. webview 禁止苹果自动下拉_苹果开发者账号申请必备:双重认证教程!

    在此之前,德普船长出过一份苹果开发者账户注册教程(点击跳转教程),其中有小问题,就是苹果账户的双重认证,现在申请苹果开发者账号要求开启双重认证才能提交申请,这一步需要在苹果设备上进行操作,有些小伙伴不 ...

最新文章

  1. ecplise中插件Jrebel的安装
  2. jota-time 练习
  3. asterisk cdr mysql_在asterisk中添加CDR sqlite支持 | 学步园
  4. SAP云平台上部署应用时遇到disk quota不够的问题
  5. TCP/IP协议模型
  6. 为什么有些人会财路不顺?
  7. Java继承,接口,抽象类
  8. centos cmake安装mysql_CentOS下使用cmake编译安装mysql
  9. 联想笔记本那些有手写功能_联想笔记本如何使用vista自带的手写输入法tablet pc...
  10. 联邦快递认了:转运华为货件到美国,但称是“失误”!
  11. Redis主从架构和哨兵架构模式
  12. java网上订餐系统开题报告_网上订餐系统的设计与实现
  13. [请您去投票]ESRI中国社区2008年度优秀会员评选
  14. FC SAN、IP SAN、IB SAN
  15. 【定量分析、量化金融与统计学】R语言MANOVA多元方差分析
  16. labview—电子表格文件读写
  17. PAKDD2018小结
  18. loj 6184 无心行挽 虚树+DP+倍增
  19. Unity射击游戏发射子弹的方法和提升流畅性的小技巧
  20. 设置360浏览器的背景色为绿豆色或护眼色

热门文章

  1. MySQL8.0优化 - 优化MySQL服务器、优化MySQL的参数、优化数据类型
  2. 考研复试——C、C++
  3. windows10启动盘不能被识别,需要解开bios安全锁
  4. 苹果mac中的快速搜索工具:spotlight的使用方法
  5. 博客园文章添加版权信息的方法
  6. php读取decimal显示00000,对decimal 类型的数据进行获取调整
  7. 招聘季,什么样的数据人才最抢手?
  8. databus 支持oracle么,Databus
  9. 每日学术速递4.13
  10. 编程语言的发展趋势及未来方向