Я хотел бы знать, как я могу обработать событие KeyDown с MVVM в моей модели ViewModel.Mvvm TextBox Событие KeyDown
У меня есть TextBox, и когда пользователь нажимает клавишу, которая не является числом, вход не должен быть разрешен. Я обычно делаю это с кодом позади, как это (не полный код, просто простой пример):
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
// Determine whether the keystroke is a number from the top of the keyboard.
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
e.Handled = true;
}
}
Теперь я хочу, чтобы поставить это как-то в моем ViewModel с командой. Я новичок в MVVM, и сейчас я использую Bindings (отлично работает :)), но я не знаю, как использовать команду вообще ...
My TextBox выглядит так:
<TextBox Text="{Binding MyField, Mode=TwoWay}"/>
ViewModel:
private string _myfield;
public string MyField{
get { return _myfield; }
set {
_myfield= value;
RaisePropertyChanged(()=>MyField)
}
}
Но сеттер будет называться только, когда я выхожу из TextBox + у меня нет доступа к введенному ключ.
возможно дубликат: http://stackoverflow.com/questions/612966/keyboard-events-in-a-wpf-mvvm-application – walther
Спасибо. Другой вопрос: I.e. Я нажимаю на свой TextBox, это также приведет к событию GotFocus? У меня есть десятичное текстовое поле со стандартным значением 0.00. Когда я нажимаю в TextBox, значение должно быть «» (если значение 0.00 находится в TextBox). Я вижу, что UpdateSourceTrigger будет поднимать мой сеттер каждый раз, когда я ввожу что-то, и что мне нужно будет проверить/установить значение в зависимости от ввода ... Во всяком случае, «KeyDown» работает, но как насчет GotFocus? PS: Этот вопрос показывает, как поднять событие при нажатии клавиши, но я хочу обрабатывать все события KeyDown, а не специальный ключ. (Без кода) – Rudi