微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight – 在XAML中按“ENTER”键时调用命令

我想在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] 举报,一经查实,本站将立刻删除。

相关推荐