Нажатие Enter на TextBox в Silverlight
Я работаю над приложением silverlight, которое вам нужно ввести в текстовое поле, а затем просто нажмите enter. Ну, нет события onclick, которое я мог бы найти, поэтому я сделал это с помощью события onkeypressup и проверял, был ли он нажатием клавиши ввода, если это так "бла".
Просто кажется, что есть лучший способ сделать это. Итак, вопрос в том, есть ли?
Ответы
Ответ 1
Я думаю, что способ поймать Key.Enter.
Кроме того, код будет более читабельным, если вы используете событие KeyDown вместо события KeyUp.
Если вы заботитесь только о том, чтобы поймать Key.Enter для одного элемента управления, ваш подход будет правильным.
Вы также можете поймать Key.Enter для группы связанных элементов управления, используя событие KeyDown своего контейнера ( "Event Bubbling" ).
Ответ 2
Вы действительно хотите это в текстовом поле? Я бы поставил обработчик onkeyup на контейнер (например, Grid, Canvas), чтобы нажать кнопку в любом месте формы.
Ответ 3
Это будет работать, если вы хотите привязать свойство Command вместо использования события Click. Начните с создания обработчика событий для Click (см. Ниже), а затем в KeyUp do:
private void MyTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter) SomeButton_Click(this, null);
}
private void SomeButton_Click(object sender, RoutedEventArgs e)
{
ICommand cmd = SomeButton.Command;
if (cmd.CanExecute(null))
{
cmd.Execute(null);
}
}
Ответ 4
Я использую следующую реализацию при использовании шаблона команды:
private void MyTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
BindingExpression b = MyTextBox.GetBindingExpression(TextBox.TextProperty);
if (b != null)
b.UpdateSource();
ICommand cmd = SomeButton.Command;
if (cmd.CanExecute(null))
cmd.Execute(null);
}
}
Когда вы нажмете Enter, источник данных текстового поля не будет обновлен, а команда будет использовать старое значение. Поэтому перед выполнением команды необходимо вызвать UpdateSource.
Конечно, вы можете поймать событие на более высоком уровне, чем текстовое поле.
Ответ 5
Ну, я preaty новый для Silverlight, и я создал HitEnter beahaviour для кнопки, у которой есть одна кнопка DependencyProperty.
И я manulay подключаю кнопку и поведение (в коде позади), а затем, когда вводится хит, я inovke команды на кнопку.