Я пытаюсь зафиксировать нажатие клавиши Enter в текстовом поле, чтобы я мог запустить обновление на сервере.Это не работает, и поэтому я сократил проблему до упрощенных элементов.
В этом примере кажется, что привязка происходит не при нажатии клавиши, а через некоторое время.Мне нужно, чтобы привязка была завершена к тому времени, когда нажата клавиша ввода.Рассмотрим следующий XAML и функцию от виртуальной машины.
Вот XAML текстового поля
<TextBox Text="{Binding TextValue, Mode=TwoWay}" Height="23" Width="300">
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<cmd:EventToCommand Command="{Binding KeyDownCommand}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
KeyDownCommand срабатывает, как и ожидалось, однако значение еще не находится в свойстве TextValue.Если я нажму ввод второй раз, тогда значение будет в свойстве?Вот KeyDownCommand.Конструктор ViewModel правильно устанавливает keyDownCommand.
public RelayCommand<RoutedEventArgs> KeyDownCommand { get; private set; }
private void KeyDownAction(RoutedEventArgs eventArg)
{
var source = eventArg.OriginalSource as FrameworkElement;
var e = eventArg as KeyEventArgs;
if (source != null && e != null && e.Key== Key.Enter)
{
e.Handled = true;
MessageBox.Show(TextValue);
}
}
Мне кажется, что мне нужен способ "опубликовать" текст TextBox обратно в свойство TextValue виртуальной машины, когда клавиша Enter являетсянажат.Или я что-то упускаю.