我想在TextBox中按ENTER键时调用命令。考虑以下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实现之上,可以做我所需要的。另一个考虑是写我自己的触发器,但我希望有一种方法可以在不使用外部工具包的情况下执行。
解决方法
表达式共有
KeyTrigger。
<UserControl xmlns:i="clr-namespace:System.Windows.Interactivity; assembly=System.Windows.Interactivity" xmlns:iex="clr-namespace:Microsoft.Expression.Interactivity.Input; assembly=Microsoft.Expression.Interactions" ...> <TextBox> <i:Interaction.Triggers> <iex:KeyTrigger Key="Enter"> <i:InvokeCommandAction Command="{Binding PasswordLoginCommand}" /> </iex:KeyTrigger> </i:Interaction.Triggers> </TextBox> </UserControl>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。