Обнаружение Backspace при KeyDown

Я работаю над веб-приложением Silverlight. Он взаимодействует с модулем, который отправляет SMS. Я хочу ограничить текст до 160 и показать счетчик. Я сделал это так:

public partial class SendSMSView
{
    public SendSMSView()
    {
       InitializeComponent();
       ApplyTheme();
    }

    protected void tbMessage_KeyDown(object sender, KeyEventArgs e)
    {
        count = 160 - this.tbMessage.Text.Length;
        this.lblCount.Content = count.ToString();
    }
}

Это отлично работает для всех клавиш, кроме backspace и delete. Конечно, он так устроен. Я углубился в эту тему и попытался переопределить событие нажатия клавиш, поэтому добавил следующий фрагмент кода:

public class CustomTextBox : TextBox
{
    public CustomTextBox(): base()
    {
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        e.handler=false;
        base.OnKeyDown(e);
        //this place
    }
}

В функции OnKeyDown я регистрирую все нажатия клавиш. Установка Handler на false здесь не помогает, и все же я не могу получить обратное пространство для запуска tbMessage_KeyDow.

Я хочу каким-то образом вызвать функцию tbMessage_KeyDow из // этого места принудительно оттуда для возврата.

Я поискал в MSDN и обнаружил, что IsInputKey можно переопределить, чтобы вернуть true, чтобы onKeyDown тоже реагировал на него, но в моей структуре нет IsInputKey или PreviewKeyPress. Есть ли обходной путь для регистрации клавиши возврата в качестве клавиши ввода или вызова tbMessage_KeyDow [что является очень грубым подходом]? Пожалуйста помоги.

12
задан Yuval Itzchakov 22 November 2014 в 14:43
поделиться