silverlight WPF 水纹文本框
silverlight3取消了watertextbox控件,只有自己实现了个,实现了和textbox一样的无差异使用,只需要设置defaulttext就可以了
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media; namespace iLIS.Common.Controls
{
/// <summary>
/// 自定义WatermarkedTextBox控件
/// </summary>
public class WatermarkedTextBox : TextBox
{
/// <summary>
/// 水印文字
/// </summary>
public string DefaultText
{
get
{
return (string)GetValue(DefaultTextProperty);
}
set
{
SetValue(DefaultTextProperty, value);
}
}
/// <summary>
/// 文本框中的文字
/// 文字为水印文字时返回空
/// </summary>
public string Text
{
get
{
if (base.Text == DefaultText)
{
return string.Empty;
}
else
{
return base.Text;
}
}
set
{
base.Text = value;
}
}
/// <summary>
/// 获取或设置一个用于描述前景色的画笔。
/// 用于绘制控件的前景的画笔。默认值为 System.Windows.Media.Colors.Black。
/// </summary>
public new Brush Foreground
{
get
{
return (Brush)GetValue(ForegroundProperty);
}
set
{
SetValue(ForegroundProperty, value);
}
} // Using a DependencyProperty as the backing store for Foreground. This enables animation, styling, binding, etc...
public static new readonly DependencyProperty ForegroundProperty =
DependencyProperty.Register("Foreground", typeof(Brush), typeof(WatermarkedTextBox), new PropertyMetadata((o, e) =>
{
SolidColorBrush brush = e.NewValue as SolidColorBrush;
if (brush != null && brush.Color != Colors.Gray)
{
(o as WatermarkedTextBox).oldBrush = brush;
}
})); private Brush oldBrush = new SolidColorBrush(Colors.Black);
/// <summary>
/// 默认文本
/// </summary>
public static readonly DependencyProperty DefaultTextProperty =
DependencyProperty.Register("DefaultText", typeof(string), typeof(WatermarkedTextBox), new PropertyMetadata(""));
public event TextChangedEventHandler WatermarkedTextChanged;
/// <summary>
/// 初始化 System.Windows.Controls.TextBox 类的新实例。
/// </summary>
public WatermarkedTextBox()
{
base.TextChanged += new TextChangedEventHandler(OnWatermarkedTextBox_TextChanged);
} /// <summary>
///在派生类中重写后,每当应用程序代码或内部进程(如重新生成布局处理过程)调用 System.Windows.Controls.Control.ApplyTemplate(),都将调用此方法。
///简而言之,这意味着就在UI 元素在应用程序中显示前调用该方法。有关更多信息,请参见“备注”。
/// </summary>
public override void OnApplyTemplate()
{
this.Text = this.DefaultText;
base.OnApplyTemplate();
base.Foreground = new SolidColorBrush(Colors.Gray);
}
/// <summary>
///在 System.Windows.UIElement.GotFocus 事件发生之前调用。
/// </summary>
/// <param name="e">事件的数据</param>
protected override void OnGotFocus(RoutedEventArgs e)
{
if (string.Equals(base.Text, this.DefaultText, StringComparison.OrdinalIgnoreCase))
{
base.Text = string.Empty;
}
base.OnGotFocus(e);
}
/// <summary>
///在 System.Windows.UIElement.LostFocus 事件发生之前调用。
/// </summary>
/// <param name="e">事件的数据</param>
protected override void OnLostFocus(RoutedEventArgs e)
{
if (string.IsNullOrEmpty(base.Text))
{
base.Text = this.DefaultText;
base.Foreground = new SolidColorBrush(Colors.Gray);
}
base.OnLostFocus(e);
}
/// <summary>
/// 文本改变时调用
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnWatermarkedTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (!string.Equals(base.Text, this.DefaultText, StringComparison.OrdinalIgnoreCase))
{
base.Foreground = oldBrush;
if (this.WatermarkedTextChanged != null)
{
this.WatermarkedTextChanged(this, e);
}
}
} }
}
silverlight WPF 水纹文本框的更多相关文章
- WPF 自定义文本框输入法 IME 跟随光标
本文告诉大家在 WPF 写一个自定义的文本框,如何实现让输入法跟随光标 本文非小白向,本文适合想开发自定义的文本框,从底层开始开发的文本库的伙伴.在开始之前,期望了解了文本库开发的基础知识 本文实现的 ...
- WPF 之 文本框及密码框添加水印效果
1.文本框添加水印效果 文本框水印相对简单,不需要重写模板,仅仅需要一个 VisualBrush 和触发器验证一下Text是否为空即可. <TextBox Name="txtSerac ...
- wpf中文本框只能输入整数
private void txtBarCodeNum_KeyUp(object sender, KeyEventArgs e) { TxtInt(sender as TextBox); } priva ...
- [WPF]带下拉列表的文本框
控件我已经弄好了,代码比较多,所以没办法全面介绍. 一开始我是直接继承Selector类来实现,做是做出来了,不过发现性能不太好.于是,我就想着自己来实现.毕竟我是做给自己用的,也不考虑过多的东西,也 ...
- Silverlight中文本框添加回车事件后,换行无法清除的解决方法
在开发Silverlight的项目中,为了更好的用户体验,我们常要给一些控件添加一些快捷键.然而,在Silverlight中当用户回车提交后,光标停留在文本框的第二行怎么也清除不掉,经过一段时间研究, ...
- WPF 文本框添加水印效果
有的时候我们需要为我们的WPF文本框TextBox控件添加一个显示水印的效果来增强用户体验,比如登陆的时候提示输入用户名,输入密码等情形.如下图所示: 这个时候我们除了可以修改TextBox控件的控件 ...
- WPF文本框密码框添加水印效果
WPF文本框密码框添加水印效果 来源: 阅读:559 时间:2014-12-31 分享: 0 按照惯例,先看下效果 文本框水印 文本框水印相对简单,不需要重写模板,仅仅需要一个VisualBrush ...
- WPF编程:textbox控件文本框数据显示最后一行
WPF编程:textbox控件文本框数据显示最后一行 TextBox控件在接收大量数据的时候,滚动条一般在最上方,如何使滚动条随着数据的接收而向下滚动呢?比如有一个TextBox'控件txbRecvD ...
- WPF里面制作圆角文本框
转自:http://www.cnblogs.com/mengxin523/archive/2010/04/04/1704448.html 本以为WPF里面的XAML会很强大,可以设置很多属性,比如文本 ...
随机推荐
- 腾讯QQ会员技术团队:以手机QQ会员H5加速为例,为你揭开sonic技术内幕
目前移动端越多越多的网页开始H5化,一方面可以减少安装包体积,另一方面也方便运营.但是相对于原生界面而言,H5的慢速问题一定被大家所诟病,针对这个问题,目前手Q存在几种方案,最常见的便是离线包方案,但 ...
- SSH相关小应用
1.隐藏值:<s:hidden name="bbsTopic.id" value="%{bbsTopic.id}"></s:hidden> ...
- Grunt usemin
yeoman/grunt-usemin 用来将 HTML 文件中(或者 templates/views)中没有优化的 script 和 stylesheets 替换为优化过的版本. usemin 暴露 ...
- 安装IPython攻略
由于对python自带的idle不太满意,看到有介绍说ipython不错,于是想装一个试试. 机器上该装的扩展包都已经装好了,比如setuptools,matplotlib,环境变量配置,所以安装起来 ...
- require.js 源码解读——配置默认上下文
首先,我们先来简单说一下,require.js的原理: 1.载入模块 2.通过模块名解析出模块信息,以及计算出URL 3.通过创建SCRIPT的形式把模块加载到页面中. 4.判断被加载的脚本,如 ...
- java日期转换
在java开发过程中,时间的转换时必须掌握的=========下面把时间转换做个总结,有可能不是很全面 时间格式只有两种 yyyy-MM-DD yyyy/MM/DD 时间的类型:字符串类型.sql类型 ...
- 大数据量场景下storm自定义分组与Hbase预分区完美结合大幅度节省内存空间
前言:在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗.大量的预分 ...
- STM32位带操作总结---浅显易懂
正在准备做毕业设计,配置LED_Config()的时候,又看到了位带操作的宏定义,我又嘀咕了,什么是位带操作,一年前在使用位带操作的时候,就查阅过好多资料,Core-M3也看过,但是对于博主这种“低能 ...
- Excel图表-创意雷达图-原创图表
p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...
- 我是如何处理大并发量订单处理的 KafKa部署总结
今天要介绍的是消息中间件KafKa,应该说是一个很牛的中间件吧,背靠Apache 与很多有名的中间件搭配起来用效果更好哦 ,为什么不用RabbitMQ,因为公司需要它. 网上已经有很多怎么用和用到哪的 ...