如何以编程方式使用EventTrigger和InvokeCommandAction?

时间:2013-01-17 05:32:56

标签: wpf mvvm

我有一个TextBox的弹出窗口,用户应该输入一个票号,然后当用户按下回车键时,我希望将票号传递给将检索票证的ViewModel。

以下是TextBox

的xaml
<TextBox x:Name="TicketNumber">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="KeyDown">
            <i:InvokeCommandAction Command="{Binding OpenTicketCommand}" 
                                   CommandParameter="{Binding ElementName=TicketNumber,
                                                              Path=Text}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>

以上适用于任何按键,但我真的只希望在按下回车键时发生。我该怎么做呢?

编辑:我假设它必须以编程方式完成(因此标题),但如果没有,那也没关系。

1 个答案:

答案 0 :(得分:20)

您可以使用InputBindings - KeyBinding作为替代方法。

这样的事情:

<TextBox x:Name="TicketNumber">
    <TextBox.InputBindings>
        <KeyBinding Key="Enter"
                    Command="{Binding OpenTicketCommand}" 
                    CommandParameter="{Binding ElementName=TicketNumber,
                                               Path=Text}"/>
    </TextBox.InputBindings>
</TextBox>