WPF 带有watermark的文本输入框

it2022-05-09  23

WPF 带有watermark的文本输入框

 用户名输入框:

1.没有获取焦点时, 如果输入内容为空,显示Mask文本:Please input username。如果不为空,显示文本内容。

2.获取焦点后, 如果是Mask文本,清除。如果不是,保留输入的内容。

这种例子很多,相信大家都熟悉。

 

public  class  MaskTextBox : TextBox      {          #region MaskText          /// <summary>          /// view sort style, desc arrow          /// </summary>          public  static  readonly  DependencyProperty MaskTextProperty =                     DependencyProperty.Register( "MaskText" , typeof ( string ), typeof (MaskTextBox));            public  string  MaskText          {              get  { return  ( string )GetValue(MaskTextProperty); }              set  { SetValue(MaskTextProperty, value); }          }          #endregion            public  MaskTextBox()          {              Loaded += (sender, args) =>                  {                      if  ( string .IsNullOrEmpty( base .Text))                      {                          base .Text = MaskText;                          base .Foreground = Brushes.Gray;                      }                  };                base .GotFocus += (sender, args) =>              {                  base .Foreground = Brushes.Black;                  if  ( base .Text == MaskText)                      base .Text = string .Empty;              };              base .LostFocus += (sender, args) =>              {                  if  (! string .IsNullOrEmpty( base .Text))                      return ;                    base .Text = MaskText;                  base .Foreground = Brushes.Gray;              };          }            public  new  string  Text          {              get              {                  if  ( base .Text == MaskText)                      return  string .Empty;                  else                      return  base .Text;              }              set  { base .Text = value; }          }      }

  

   调用很简单:

<local:MaskTextBox Width="200" Height="30"   Margin="20,10,10,10" x:Name="tbUserName" MaskText="Please Input Username"/>

如果用触发器等等,实现起来很麻烦,做了一半做不下去了,所以这么干。

 原文:http://www.cnblogs.com/xiaokang088/archive/2012/09/05/2672070.html

posted on 2014-12-17 14:27 louvens 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/louvens/p/4169316.html


最新回复(0)