• silverlight WPF 水纹文本框


    silverlight3取消了watertextbox控件,只有自己实现了个,实现了和textbox一样的无差异使用,只需要设置defaulttext就可以了

      1 using System;
      2 using System.Windows;
      3 using System.Windows.Controls;
      4 using System.Windows.Media;
      5 
      6 namespace iLIS.Common.Controls
      7 {
      8     /// <summary>
      9     /// 自定义WatermarkedTextBox控件
     10     /// </summary>
     11     public class WatermarkedTextBox : TextBox
     12     {
     13         /// <summary>
     14         /// 水印文字
     15         /// </summary>
     16         public string DefaultText
     17         {
     18             get
     19             {
     20                 return (string)GetValue(DefaultTextProperty);
     21             }
     22             set
     23             {
     24                 SetValue(DefaultTextProperty, value);
     25             }
     26         }
     27         /// <summary>
     28         /// 文本框中的文字
     29         /// 文字为水印文字时返回空
     30         /// </summary>
     31         public string Text
     32         {
     33             get
     34             {
     35                 if (base.Text == DefaultText)
     36                 {
     37                     return string.Empty;
     38                 }
     39                 else
     40                 {
     41                     return base.Text;
     42                 }
     43             }
     44             set
     45             {
     46                 base.Text = value;
     47             }
     48         }
     49         /// <summary>
     50         /// 获取或设置一个用于描述前景色的画笔。
     51         /// 用于绘制控件的前景的画笔。默认值为 System.Windows.Media.Colors.Black。
     52         /// </summary>
     53         public new Brush Foreground
     54         {
     55             get
     56             {
     57                 return (Brush)GetValue(ForegroundProperty);
     58             }
     59             set
     60             {
     61                 SetValue(ForegroundProperty, value);
     62             }
     63         }
     64 
     65         // Using a DependencyProperty as the backing store for Foreground.  This enables animation, styling, binding, etc...
     66         public static new readonly DependencyProperty ForegroundProperty =
     67             DependencyProperty.Register("Foreground", typeof(Brush), typeof(WatermarkedTextBox), new PropertyMetadata((o, e) =>
     68             {
     69                 SolidColorBrush brush = e.NewValue as SolidColorBrush;
     70                 if (brush != null && brush.Color != Colors.Gray)
     71                 {
     72                     (o as WatermarkedTextBox).oldBrush = brush;
     73                 }
     74             }));
     75 
     76         private Brush oldBrush = new SolidColorBrush(Colors.Black);
     77         /// <summary>
     78         /// 默认文本
     79         /// </summary>
     80         public static readonly DependencyProperty DefaultTextProperty =
     81             DependencyProperty.Register("DefaultText", typeof(string), typeof(WatermarkedTextBox), new PropertyMetadata(""));
     82         public event TextChangedEventHandler WatermarkedTextChanged;
     83         /// <summary>
     84         /// 初始化 System.Windows.Controls.TextBox 类的新实例。
     85         /// </summary>
     86         public WatermarkedTextBox()
     87         {
     88             base.TextChanged += new TextChangedEventHandler(OnWatermarkedTextBox_TextChanged);
     89         }
     90 
     91         /// <summary>
     92         ///在派生类中重写后,每当应用程序代码或内部进程(如重新生成布局处理过程)调用 System.Windows.Controls.Control.ApplyTemplate(),都将调用此方法。
     93         ///简而言之,这意味着就在UI 元素在应用程序中显示前调用该方法。有关更多信息,请参见“备注”。
     94         /// </summary>
     95         public override void OnApplyTemplate()
     96         {
     97             this.Text = this.DefaultText;
     98             base.OnApplyTemplate();
     99             base.Foreground = new SolidColorBrush(Colors.Gray);
    100         }
    101         /// <summary>
    102         ///在 System.Windows.UIElement.GotFocus 事件发生之前调用。
    103         /// </summary>
    104         /// <param name="e">事件的数据</param>
    105         protected override void OnGotFocus(RoutedEventArgs e)
    106         {
    107             if (string.Equals(base.Text, this.DefaultText, StringComparison.OrdinalIgnoreCase))
    108             {
    109                 base.Text = string.Empty;
    110             }
    111             base.OnGotFocus(e);
    112         }
    113         /// <summary>
    114         ///在 System.Windows.UIElement.LostFocus 事件发生之前调用。
    115         /// </summary>
    116         /// <param name="e">事件的数据</param>
    117         protected override void OnLostFocus(RoutedEventArgs e)
    118         {
    119             if (string.IsNullOrEmpty(base.Text))
    120             {
    121                 base.Text = this.DefaultText;
    122                 base.Foreground = new SolidColorBrush(Colors.Gray);
    123             }
    124             base.OnLostFocus(e);
    125         }
    126         /// <summary>
    127         /// 文本改变时调用
    128         /// </summary>
    129         /// <param name="sender"></param>
    130         /// <param name="e"></param>
    131         private void OnWatermarkedTextBox_TextChanged(object sender, TextChangedEventArgs e)
    132         {
    133             if (!string.Equals(base.Text, this.DefaultText, StringComparison.OrdinalIgnoreCase))
    134             {
    135                 base.Foreground = oldBrush;
    136                 if (this.WatermarkedTextChanged != null)
    137                 {
    138                     this.WatermarkedTextChanged(this, e);
    139                 }
    140             }
    141         }
    142 
    143     }
    144 }
  • 相关阅读:
    IOS--UILabel的使用方法详细
    一个人不成熟的六大特征:
    UIView
    objective-c 错题
    洛谷P1039 侦探推理(模拟)
    洛谷P1038 神经网络(bfs,模拟,拓扑)
    FBI树-数据结构(二叉树)
    二叉树遍历(flist)(二叉树,已知中序层序,求先序)
    求先序排列(二叉树已知中序和后序,求先序)
    哈理工2015暑假集训 zoj 2975 Kinds of Fuwas
  • 原文地址:https://www.cnblogs.com/missile/p/6406424.html
Copyright © 2020-2023  润新知