Пользовательский элемент управления в WPF: создание числового PasswordBox
Я создал числовой TextBox, унаследовав TextBox следующим образом:
public class NumericTextBox : TextBox
{
public NumericTextBox() : base()
{
this.AddHandler(DataObject.PastingEvent, new DataObjectPastingEventHandler(this.TextBoxPasting));
}
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
base.OnPreviewTextInput(e);
e.Handled = !IsTextAllowed(e.Text);
}
private bool IsTextAllowed(string text)
{
Regex regex = new Regex("[^0-9]+");
return !regex.IsMatch(text);
}
private void TextBoxPasting(object sender, DataObjectPastingEventArgs e)
{
if (e.DataObject.GetDataPresent(typeof(String)))
{
String text = (String)e.DataObject.GetData(typeof(String));
if (!IsTextAllowed(text))
{
e.CancelCommand();
}
}
else
{
e.CancelCommand();
}
}
}
но я не могу сделать то же самое для PasswordBox, так как поле пароля является запечатанным классом. Любая идея, как я могу добиться этого для PasswordBox?