WPF滚动条自动下拉实现
WPF滚动条自动下拉实现
WPF虽然很灵活,但是很多控件功能都需要自己实现。
例如通常软件UI的运行记录,不管用TextBox或者ListBox,还是其他,自动下拉到最后一条的功能都要自己去实现
假设使用ListBox
- 首先把ListBox 嵌入到ScrollViewer,如下
<ScrollViewer HorizontalScrollBarVisibility="Auto"><ListBox HorizontalContentAlignment="Left"/></ScrollViewer>
- 给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); }}}
- 很重要的一步,要先将工程编译,然后就可以轻松愉快的使用这个自动下拉到最后一条的属性了,不得不感叹WPF的强大!如下所示
<ScrollViewer local:ScrollViewerExtensions.AlwaysScrollToEnd="True" HorizontalScrollBarVisibility="Auto"><ListBox HorizontalContentAlignment="Left"/></ScrollViewer>
- 完事了,后面其他的TextBox也依葫芦画瓢,一样能使用,记录并分享一下
WPF滚动条自动下拉实现相关推荐
- html滚动条自动下拉,[JS] jquery实现div随滚动条下拉浮动功能
1.简介 div浮动,当滚动条下拉时,将div浮动到固定位置上. 2.实现 引用jquery.js略 1.html div加id="float".如 浮动内容 2.css 样式.d ...
- ajax下拉列表模糊,JS仿百度自动下拉框模糊匹配提示
实际项目中,我们可以把数据获取改成ajax动态获取,在 getContent()中 js/jQuery实现类似百度搜索功能 #container { position: absolute; left: ...
- html 仿京东收起展开,网页顶部自动下拉/收缩广告代码(仿京东)
[javascript]代码库 网页顶部自动下拉/收缩广告代码(仿京东) var intervalId = null; function slideAd(id, nStayTime, sState, ...
- 模拟百度的自动下拉提示框
最近开始接触AJAX,最初以为是一种很新很时髦的技术,等学习了一段时间后, 发现不过是一些老技术的结合.最重要的就是XMLHttpRequest对象(JS) 正所谓学以致用,今天突发灵感,觉得百度的自 ...
- vue怎么取消按回车下拉框自动下拉_八月更新第二版,小视频自动竖屏全屏播放,失效校验再次升级!...
新方圆小棉袄,传说中的贴心小棉袄,宇宙无敌超级厉害. 记住我们的付费群(大佬众多):978260150,免费群:1101359539 1.方圆和海阔的规则导入和支付宝口令类似,将口令全部复制打开最新版 ...
- vue如何取消下拉框按回车自动下拉_按逗号拆分Excel单元格,再分离中文数字,春节压岁钱统计就用它...
大家春节好! 大年三十还在坚持更新的小编估计也没几个了. 今天这篇推送,是为了趁热打铁,教大家统计萌娃们收到的压岁钱.具体要求是:按分隔符将一个单元格拆分成多个,且分离中文和数字,并且转置成竖向表格. ...
- layui select框代码实现自动下拉
因为项目有个字段需要根据输入匹配类似选项通过下拉框表现出来,然后点击选择... 项目使用的layui框架,这个框架有个缺点就是一些H5标签使不上用场,比如datalist...,所以只能尝试寻找它自带 ...
- vue如何取消下拉框按回车自动下拉_如何用大白菜重装系统|大白菜怎么重装系统教程详解...
我们在电脑出现崩溃故障的问题时,都会通过重装系统解决,现在重装系统很方便,比如用大白菜做成的启动U盘就可以重装系统,很多人还不知道怎么用大白菜重装系统,接下来系统城小编就跟大家介绍大白菜怎么重装系统的 ...
- webview 禁止苹果自动下拉_苹果开发者账号申请必备:双重认证教程!
在此之前,德普船长出过一份苹果开发者账户注册教程(点击跳转教程),其中有小问题,就是苹果账户的双重认证,现在申请苹果开发者账号要求开启双重认证才能提交申请,这一步需要在苹果设备上进行操作,有些小伙伴不 ...
最新文章
- ecplise中插件Jrebel的安装
- jota-time 练习
- asterisk cdr mysql_在asterisk中添加CDR sqlite支持 | 学步园
- SAP云平台上部署应用时遇到disk quota不够的问题
- TCP/IP协议模型
- 为什么有些人会财路不顺?
- Java继承,接口,抽象类
- centos cmake安装mysql_CentOS下使用cmake编译安装mysql
- 联想笔记本那些有手写功能_联想笔记本如何使用vista自带的手写输入法tablet pc...
- 联邦快递认了:转运华为货件到美国,但称是“失误”!
- Redis主从架构和哨兵架构模式
- java网上订餐系统开题报告_网上订餐系统的设计与实现
- [请您去投票]ESRI中国社区2008年度优秀会员评选
- FC SAN、IP SAN、IB SAN
- 【定量分析、量化金融与统计学】R语言MANOVA多元方差分析
- labview—电子表格文件读写
- PAKDD2018小结
- loj 6184 无心行挽 虚树+DP+倍增
- Unity射击游戏发射子弹的方法和提升流畅性的小技巧
- 设置360浏览器的背景色为绿豆色或护眼色