Пользовательский элемент управления в WPF: создание числового PasswordBox - PullRequest
0 голосов
/ 06 февраля 2012

Я создал числовой 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?

...