• windows phone 水印TextBox


    原理:在失去焦点和获取焦点的时候,判断Text值是否为空或者是否与水印值相同,然后修改TextBox中的Text和Foreground。

    代码如下:

    /* ==============================================================================
     2   * 类名称:WatermarkTextBox
     3   * 类描述:
     4   * 创建人:neoyee
     5   * 创建时间:2014/2/25 17:24:11
     6   * 修改人:
     7   * 修改时间:
     8   * 修改备注:
     9   * @version 1.0
    10   * ==============================================================================*/
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Media;
    using Windows.UI;
    
    
    namespace WP8.Controls
    {
        public sealed class WatermarkTextBox : TextBox
        {
            private static readonly DependencyProperty WatermarkTextProperty =
                  DependencyProperty.Register("WatermarkText", typeof(string), typeof(WatermarkTextBox), new PropertyMetadata(string.Empty, new PropertyChangedCallback(WatermarkTextChanged)));
    
    
            private static readonly DependencyProperty WatermarkForegroundProperty =
                DependencyProperty.Register("WatermarkForeground", typeof(SolidColorBrush), typeof(WatermarkTextBox), new PropertyMetadata(new SolidColorBrush(Colors.Black)));
    
            private static readonly DependencyProperty WatermarkBackgroundProperty =
                DependencyProperty.Register("WatermarkBackground", typeof(SolidColorBrush), typeof(WatermarkTextBox), new PropertyMetadata(new SolidColorBrush(Colors.White)));
    
            private static readonly DependencyProperty NormalForegroundProperty =
                DependencyProperty.Register("NormalForeground", typeof(SolidColorBrush), typeof(WatermarkTextBox), new PropertyMetadata(new SolidColorBrush(Colors.Black), NormalForegroundPropertyChanged));
    
            private static readonly DependencyProperty NormalBackgroundProperty =
               DependencyProperty.Register("NormalBackground", typeof(SolidColorBrush), typeof(WatermarkTextBox), new PropertyMetadata(new SolidColorBrush(Colors.White)));
    
            private static void NormalForegroundPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
            {
                var watermarkTextBox = obj as WatermarkTextBox;
                if (watermarkTextBox != null)
                    watermarkTextBox.NormalForegroundChanged((SolidColorBrush)args.NewValue);
            }
    
            private void NormalForegroundChanged(SolidColorBrush value)
            {
                Foreground = value;
            }
    
            public SolidColorBrush NormalBackground
            {
                get { return (SolidColorBrush)GetValue(NormalBackgroundProperty); }
                set { SetValue(NormalBackgroundProperty, value); }
            }
    
            public SolidColorBrush NormalForeground
            {
                get { return (SolidColorBrush)GetValue(NormalForegroundProperty); }
                set { SetValue(NormalForegroundProperty, value); }
            }
            public SolidColorBrush WatermarkBackground
            {
                get { return (SolidColorBrush)GetValue(WatermarkBackgroundProperty); }
                set { SetValue(WatermarkBackgroundProperty, value); }
            }
            public SolidColorBrush WatermarkForeground
            {
                get { return (SolidColorBrush)GetValue(WatermarkForegroundProperty); }
                set { SetValue(WatermarkForegroundProperty, value); }
            }
    
            public string WatermarkText
            {
                get { return (string)GetValue(WatermarkTextProperty); }
                set { SetValue(WatermarkTextProperty, value); }
            }
    
            public WatermarkTextBox()
            {
                this.LostFocus += WatermarkTextBox_LostFocus;
                this.GotFocus += WatermarkTextBox_GotFocus;
                this.TextChanged += WatermarkTextBox_TextChanged;
                if (string.IsNullOrEmpty(this.Text))
                {
                    this.Text = WatermarkText;
                    Foreground = WatermarkForeground;
                }
    
            }
    
            void WatermarkTextBox_TextChanged(object sender, TextChangedEventArgs e)
            {
    
                if (Text == WatermarkText)
                {
                    this.Text = WatermarkText;
                    Foreground = WatermarkForeground;
                }
                else if (Text != WatermarkText)
                {
                    Foreground = NormalForeground;
                }
            }
    
            private static void WatermarkTextChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
            {
                ((WatermarkTextBox)obj).WatermarkTextChanged(args.OldValue, args.NewValue);
            }
    
            private void WatermarkTextChanged(object OldValue, object NewValue)
            {
               
    
            }
    
            void WatermarkTextBox_GotFocus(object sender, RoutedEventArgs e)
            {
                if (this.Text == WatermarkText && Foreground == WatermarkForeground)
                {
                    this.Text = string.Empty;
                    Foreground = NormalForeground;
                }
            }
    
            void WatermarkTextBox_LostFocus(object sender, RoutedEventArgs e)
            {
                if (string.IsNullOrEmpty(this.Text) || Text == WatermarkText)
                {
                    this.Text = WatermarkText;
                    Foreground = WatermarkForeground;
                }
            }
        }
    }
    
  • 相关阅读:
    POJ 3411 Paid Roads(DFS)
    POJ 1699 Best Sequence(DFS)
    Codeforces Round #191 (Div. 2)
    Windows && Linux 搭建python开发环境
    zabbix 源码编译安装
    智能运维基础设施
    Redis
    ubuntu16.04 安装 mysql
    Python必须知道的基础语法
    ubuntu && CentOS && RedHat 离线安装docker
  • 原文地址:https://www.cnblogs.com/betterchaner/p/3567365.html
Copyright © 2020-2023  润新知