[WPF]带下拉列表的⽂本框
控件我已经弄好了,代码⽐较多,所以没办法全⾯介绍。
⼀开始我是直接继承Selector类来实现,做是做出来了,不过发现性能不太好。于是,我就想着⾃⼰来实现。毕竟我是做给⾃⼰⽤的,也不考虑过多的东西,也不像专业控件那样进⾏复杂封装和样式通⽤处理。
1、实现在⽂本框的⽂本更改时(输⼊内容)弹出下拉列表,以供选择;
2、下拉列表中的项会根据⽂本框已输⼊的内容,显⽰两种颜⾊。如果下拉列表中的项的⽂本⾥⾯存在⽂本框中输⼊的字符,则显⽰为另外的颜⾊;
3、当下拉列表中的项被点击时,就把项中的⽂本赋值给⽂本框。
先上⼏个图,⼤家看看。
DropdownTextBox类表⽰带下拉列表的⽂本框控件,输⼊框是⼀个TextBox,放在控件模板中;弹出下拉列表可以使⽤Popup控件。DropdownTextBox类的Text属性表⽰TextBox中的⽂本,通过属性的双向绑定来实现。DropItems属性⽤来设置要显⽰在下拉列表在的项列表。IsDropdownOpened属性指⽰下拉列表框是否已打开。
当Text属性改变后会引发TextChanged事件。
DropdownItem类表⽰放在下拉列表框⾥⾯的⼀个项,⼦控件。模板中放置了⼀个TextBlock对象,通过该对来实现呈现不同颜⾊的⽂本,即使⽤其Inlines属性。
⽅法是先把⽂本框中输⼊的⽂本⽤ToCharArray转为char数组,再分别⽤数组中的每个char在待选项的⽂本中查,如果没到,即正常颜⾊(如蓝⾊),就设置Run元素的前景⾊为常规颜⾊;如果到,说明项中的⽂本包含输⼊的字符,就把Run的前景⾊改为其他颜⾊(如红⾊)。最后把所有Run元素都加⼊到TextBlock的Inlines集合中。
WPF做控件的好处就在于可以把UI单独拿出来设计,控件的UI就可以“拼图”。剩下的⼯作就是处理代码逻辑了。通常来说,如果只是把控件弄出来⾃⼰⽤的,还⽐较好办,不虽太严格的思路。如果是专业控件,当然要经过⼀番痛苦的思考和设计了。textbox控件边框设置
本控件仅供参考,也可能存在许多不⾜,有兴趣的朋友可以完善完善。
以下是源代码的下载地址:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论