zoukankan      html  css  js  c++  java
  • 占位符行为 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

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

  • 相关阅读:
    领域驱动设计学习笔记(一 事件总线)
    枚举位预算 (适用于权限和拥有多种枚举值)
    Javascript闭包(狗血剧情,通俗易懂)
    Xml序列化和反序列化
    Javascript轮播 支持平滑和渐隐两种效果(可以只有两张图)
    Git使用教程
    MySQL数据库基本用法-聚合-分组
    MySQL数据库基本用法-查询
    MySQL数据库基本用法
    JS中获取文件点之后的后缀字符
  • 原文地址:https://www.cnblogs.com/ExMan/p/5659499.html
Copyright © 2011-2022 走看看