Это было бы не лучше, чем подключиться к событию KeyUp или KeyPress текстового поля, и в обработчике события вызвать команду, если e.Key == ENTER. Итак, для этого потребуется тесная связь, которой командование должно избежать ... и я просил решение в XAML; проверка ключа в ViewModel просто добавляет другой слой для обработки события с кодом, который можно легко сделать в представлении (а не в модели представления). Кроме того, такая обработка событий в любом случае не должна происходить в модели представления =)

у вызвать команду, когда ENTER нажата вTextBox, Рассмотрим следующий XAML:

<UserControl
     ...
     xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
     ...>    
     ...    
     <TextBox>
          <i:Interaction.Triggers>
               <i:EventTrigger EventName="KeyUp">
                    <i:InvokeCommandAction Command="{Binding MyCommand}"
                                           CommandParameter="{Binding Text}" />
               </i:EventTrigger>
          </i:Interaction.Triggers>
     </TextBox>    
     ...    
</UserControl>

и что MyCommand выглядит следующим образом:

public ICommand MyCommand {
     get { return new DelegateCommand<string>(MyCommandExecute); }
}

private void MyCommandExecute(string s) { ... }

С учетом вышеизложенного моя команда вызывается при каждом нажатии клавиши. Как я могу ограничить команду только для вызова при нажатии клавиши ВВОД?

Я понимаю, что с помощью Expression Blend я могу использовать условия, но, похоже, они ограничены элементами и не могут учитывать аргументы события.

Я тоже сталкивалсяSlex который предлагает свойInvokeCommandAction реализация, которая построена на вершинеSystems.Windows.Interactivity реализация и может делать то, что мне нужно. Еще одно соображение - написать собственный триггер, но я надеюсь, что есть способ сделать это без использования внешних наборов инструментов.

Ответы на вопрос(1)

Ваш ответ на вопрос