Je vyžadována podpora jazyka JavaScript
Některé stránky na tomto webu vyžadují podporu jazyka JavaScript. Váš webový prohlížeč jazyk JavaScript nepodporuje nebo jazyk JavaScript není povolen.
Chcete-li zjistit, zda webový prohlížeč podporuje jazyk JavaScript nebo jazyk JavaScript chcete povolit, přečtěte si nápovědu k vašemu webovému prohlížeči.
PasswordBoxExtender.cs
Download fileToto je zdrojový kód souboru PasswordBoxExtender.cs
Adds Watermark support to Silverlight PasswordBox control.
using System; using System.Windows; using System.Windows.Controls; namespace IMP.Windows.Controls { /// <summary> /// Adds Watermark support to PasswordBox control /// </summary> /// <remarks> /// <c>Watermark</c> support /// </remarks> public class PasswordBoxExtender { #region property getters/setters /// <summary> /// Watermark attached dependency property /// </summary> public static readonly DependencyProperty WatermarkProperty = DependencyProperty.RegisterAttached("Watermark", typeof(object), typeof(PasswordBoxExtender), new PropertyMetadata(OnWatermarkPropertyChanged)); /// <summary> /// Watermark Property getter /// </summary> public static object GetWatermark(DependencyObject source) { return (object)source.GetValue(PasswordBoxExtender.WatermarkProperty); } /// <summary> /// Watermark Property setter /// </summary> public static void SetWatermark(DependencyObject target, object value) { target.SetValue(PasswordBoxExtender.WatermarkProperty, value); } private static void OnWatermarkPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) { var passwordBox = sender as PasswordBox; if (passwordBox != null) { passwordBox.Loaded -= PasswordBox_Loaded; passwordBox.PasswordChanged -= PasswordBox_PasswordChanged; passwordBox.Loaded += PasswordBox_Loaded; passwordBox.PasswordChanged += PasswordBox_PasswordChanged; OnWatermarkChanged(passwordBox); SetWatermarkState(passwordBox, true); } } private static void OnWatermarkChanged(PasswordBox passwordBox) { Control watermarkControl = passwordBox.GetValue(PasswordBoxExtender.WatermarkProperty) as Control; if (watermarkControl != null) { watermarkControl.IsTabStop = false; watermarkControl.IsHitTestVisible = false; } } #endregion #region private member functions private static void PasswordBox_Loaded(object sender, RoutedEventArgs e) { ((PasswordBox)sender).ApplyTemplate(); SetWatermarkState((PasswordBox)sender, false); } private static void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e) { SetWatermarkState((PasswordBox)sender, true); } private static void SetWatermarkState(PasswordBox passwordBox, bool useTransitions) { object watermark = passwordBox.GetValue(PasswordBoxExtender.WatermarkProperty); // Update the WatermarkStates group if (watermark != null && string.IsNullOrEmpty(passwordBox.Password)) { GoToState(passwordBox, useTransitions, "Watermarked", "Unwatermarked"); } else { GoToState(passwordBox, useTransitions, "Unwatermarked"); } } private static void GoToState(Control control, bool useTransitions, params string[] stateNames) { if (control == null) { throw new ArgumentNullException("control"); } if (stateNames != null) { foreach (string str in stateNames) { if (VisualStateManager.GoToState(control, str, useTransitions)) { return; } } } } #endregion } }