占位符行为 PlaceHolderBehavior 的实现以及使用

简介: 原文:占位符行为 PlaceHolderBehavior 的实现以及使用这个效果我不太会描述 PlaceHolder直译占位符 也有人把这个效果叫水印效果 就是和HTML5的PlaceHolder属性一样的效果 上图直观: 使用方法: 首先下载 占位符行为dll.
原文: 占位符行为 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

目录
相关文章
|
4月前
|
存储
常见占位符
常见占位符
|
5月前
|
C++
17 C++ - 函数的占位参数
17 C++ - 函数的占位参数
38 0
|
12月前
Commons StringSubstitutor对模板占位符进行赋值
Commons StringSubstitutor对模板占位符进行赋值
153 0
|
7月前
函数的占位参数
函数的占位参数
22 0
|
9月前
|
Web App开发 前端开发 Android开发
如何修改placeholder【占位符】样式
如何修改placeholder【占位符】样式
|
Oracle Java 关系型数据库
Hibernate文字与格式化字符串不匹配错误
今天这个呢,主要是在使用Hibernate的时候遇到过这个问题,想着别人可能也会遇到这个问题,那么就简单的来记录一下问题的产生以及解决方案。
115 0
Hibernate文字与格式化字符串不匹配错误
|
Java 数据库连接 mybatis
mybatis传参、被逗号、分割的字符串、数组传参
mybatis传参、被逗号、分割的字符串、数组传参
523 0
mybatis传参、被逗号、分割的字符串、数组传参
|
SQL 存储 缓存
SQL注入、占位符拼接符
SQL注入、占位符拼接符
401 0
|
Java 开发者
配置文件占位符|学习笔记
快速学习配置文件占位符
49 0
|
C# 编译器 前端开发

热门文章

最新文章