Я хочу вызвать команду при нажатии 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) { ... }
С приведенным выше, моя команда вызывается для каждого нажатия клавиши. Как я могу ограничить команду только вызовом при нажатии клавиши ENTER?
Я понимаю, что с Expression Blend я могу использовать Условия, но они, похоже, ограничены элементами и не могут рассматривать аргументы событий.
Я также столкнулся с SLEX, который предлагает свою собственную реализацию InvokeCommandAction
, которая построена поверх реализации Systems.Windows.Interactivity
и может делать то, что мне нужно, Еще одно соображение - написать собственный триггер, но я надеюсь, что у него есть способ сделать это, не используя внешние инструментальные средства.