占位符行为 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

目录
相关文章
|
传感器 数据采集 物联网
MQTT 的 QoS 等级:QoS 0、QoS 1、QoS 2
MQTT 的 QoS 等级:QoS 0、QoS 1、QoS 2
4331 0
|
机器学习/深度学习 并行计算 计算机视觉
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
10390 1
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
|
前端开发 算法 搜索推荐
Web前端开发之面试题全解析 一(1),2024年最新前端组件化面试
Web前端开发之面试题全解析 一(1),2024年最新前端组件化面试
|
前端开发 UED 开发者
【专栏】探讨了CSS3动画卡顿的原因,包括复杂动画效果、过多元素参与、低效代码结构和硬件资源限制,并提出优化措施
【4月更文挑战第29天】本文探讨了CSS3动画卡顿的原因,包括复杂动画效果、过多元素参与、低效代码结构和硬件资源限制,并提出优化措施:简化动画路径、控制元素数量、优化代码结构、利用硬件加速及性能监测。通过实际案例展示了优化效果,强调了性能优化对提升用户体验的重要性。在开发中,应持续关注并优化动画性能,以适应网页应用的需求。
747 1
|
12月前
|
存储 Rust Go
通过对象的地址获取对象
通过对象的地址获取对象
90 0
|
机器学习/深度学习 人工智能 自然语言处理
AIGC技术带给我们什么?基于AIGC原理及其技术更迭的思考
AIGC技术带给我们什么?基于AIGC原理及其技术更迭的思考
259 0
|
Python Windows Linux
Flask 教程 第一章:Hello, World!
本文转载自:https://www.jianshu.com/p/fcbd137f308b 一趟愉快的学习之旅即将开始,跟随它你将学会用Python和Flask来创建Web应用。上面的视频包含了整个教程的内容预览(译者注:视频见原文)。
2136 0
|
存储 SQL 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 8 章 数据类型_8.10. 位串类型
8.10. 位串类型 位串就是一串 1 和 0 的串。它们可以用于存储和可视化位掩码。我们有两种类型的 SQL 位类型:bit(n)和bit varying(n),其中 n是一个正整数。 bit类型的数据必须准确匹配长度n; 试图存储短些或者长一些的位串都是错误的。
1204 0
|
SQL 测试技术 数据库
数据访问层的优化思路
对于数据访问层的优化,我简单总结了一下,其实里面有很多的点子现在想起来有一种灵光一现的感觉,但是真真切切的,里面有不少是之前公司已经做到了的,所以一个做产品的公司真心很伟大,而能够沉淀下来如此多的东西,那绝对是一笔非常宝贵的财富,对于公司,对于个人都是持久的财富。
1099 0
|
C++
图像编程学习笔记6——图像转置
转置(transpose)是指将x,y坐标对换,图2.2的转置如图2.15所示。 图2.2 图2.15   图2.2的转置 要注意的是,转置和旋转900是有区别的,不信你可以试试:怎么旋转,图2.2也转不出图2.15来。
1098 0