专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WPF

占位符举动 PlaceHolderBehavior 的实现以及使用

发布时间:2011-06-23 13:53:26 文章来源:www.iduyao.cn 采编人员:星星草
占位符行为 PlaceHolderBehavior 的实现以及使用

这个效果我不太会描述 PlaceHolder直译占位符 也有人把这个效果叫水印效果 就是和HTML5的PlaceHolder属性一样的效果 上图直观:

使用方法:

首先下载 占位符行为dll.rar 在项目中引用dll

1.在VS中

引用System.Windows.Interactivity.dll程序集

 

在xmal页面添加引用:

 然后附加到TextBox

 

设置行为的属性

Text值肯定是要设置的了,这个是提示的文字.然后按需设置其他属性.不设置的话,默认取被附加的TextBox的值.

2.在Blend中

在blend中就非常简单了,直接拖到TextBox上就行了

设置属性

 

====================================分割线============================================

这个效果非常常见,又与业务无关,非常适合做成行为Behavior,以方便在不同的项目中使用,而不用去更改控件模版.

介绍下实现的思路:

TextBox中有一个组成部件:PART_ContentHost 用于显示文本

于是我想到的最简单的实现方法就是,在这个部件上面加一个TextBlock用于显示提示信息,在TextBox的Text的Length>0的时候隐藏该TextBlock,Length=0的时候显示该TextBlock

这样的话,就需要把这个部件拿出来,套上一个Grid,再在Grid里面加上TextBlock,然后把整个Grid放回原来的位置.

既然部件的父级能放下这个FrameworkElement类型的部件,那么它必然继承自Decorator或Panel中的一个.Decorator有Child属性,Panel有Children属性.(用户有可能改控件模版,换成Grid之类的,不改的话,就是继承自Decorator)

这样的话,找到这个部件和它的父级,就能实现这个效果了.

Panel我值考虑了4种情况:StackPanel,DockPanel,Grid,Canvas

依赖属性6个:Text,FontSize,Foreground,HorizontalAlignment,VerticalAlignment,Margin

个人能力有限,难免有不完善的地方,欢迎广大博友补充指正

 

最后附上完整Demo源码: 占位符行为源码.rar

 

 

非常感谢您能读完此文 原创内容 写文章不易 如果感觉本文对你有帮助 请点击“推荐” 欢迎转载 请注明本文链接

 

 

推荐一个不错的Blend,Wpf,sl交流群

群号码:152049269

欢迎大神,萌新踊跃加入,交流探讨,共同进步!

2楼CandyZkn
挺好的,
1楼CandyZkn
之前实现水印文本框的做法是在TextBox的控件模板中添加触发器,当Text为空时就显示水印内容,当Text不为空时隐藏水印内容。
Re: 普通的地球人
@CandyZkn,是的 写这个的目的就是为了不重复的去改模板 添加触发器 把这部分逻辑抽取出来 封装成行为 应用于不同的项目 直接拖上个行为就行了
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: