louvens

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 用户名输入框:

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  阅读(285)  评论(0编辑  收藏  举报