You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
79 lines
2.5 KiB
using System;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Input;
|
|
|
|
namespace Microsoft.Windows.Controls
|
|
{
|
|
public class WatermarkTextBox : TextBox
|
|
{
|
|
#region Properties
|
|
|
|
#region SelectAllOnGotFocus
|
|
|
|
public static readonly DependencyProperty SelectAllOnGotFocusProperty = DependencyProperty.Register("SelectAllOnGotFocus", typeof(bool), typeof(WatermarkTextBox), new PropertyMetadata(false));
|
|
public bool SelectAllOnGotFocus
|
|
{
|
|
get { return (bool)GetValue(SelectAllOnGotFocusProperty); }
|
|
set { SetValue(SelectAllOnGotFocusProperty, value); }
|
|
}
|
|
|
|
#endregion //SelectAllOnGotFocus
|
|
|
|
#region Watermark
|
|
|
|
public static readonly DependencyProperty WatermarkProperty = DependencyProperty.Register("Watermark", typeof(object), typeof(WatermarkTextBox), new UIPropertyMetadata(null));
|
|
public object Watermark
|
|
{
|
|
get { return (object)GetValue(WatermarkProperty); }
|
|
set { SetValue(WatermarkProperty, value); }
|
|
}
|
|
|
|
#endregion //Watermark
|
|
|
|
#region WatermarkTemplate
|
|
|
|
public static readonly DependencyProperty WatermarkTemplateProperty = DependencyProperty.Register("WatermarkTemplate", typeof(DataTemplate), typeof(WatermarkTextBox), new UIPropertyMetadata(null));
|
|
public DataTemplate WatermarkTemplate
|
|
{
|
|
get { return (DataTemplate)GetValue(WatermarkTemplateProperty); }
|
|
set { SetValue(WatermarkTemplateProperty, value); }
|
|
}
|
|
|
|
#endregion //WatermarkTemplate
|
|
|
|
#endregion //Properties
|
|
|
|
#region Constructors
|
|
|
|
static WatermarkTextBox()
|
|
{
|
|
DefaultStyleKeyProperty.OverrideMetadata(typeof(WatermarkTextBox), new FrameworkPropertyMetadata(typeof(WatermarkTextBox)));
|
|
}
|
|
|
|
#endregion //Constructors
|
|
|
|
#region Base Class Overrides
|
|
|
|
protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
|
|
{
|
|
base.OnGotKeyboardFocus(e);
|
|
|
|
if (SelectAllOnGotFocus)
|
|
SelectAll();
|
|
}
|
|
|
|
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
|
|
{
|
|
if (!IsKeyboardFocused && SelectAllOnGotFocus)
|
|
{
|
|
e.Handled = true;
|
|
Focus();
|
|
}
|
|
|
|
base.OnPreviewMouseLeftButtonDown(e);
|
|
}
|
|
|
|
#endregion //Base Class Overrides
|
|
}
|
|
}
|
|
|