如何在程序中使用 EventTrigger 和 InvokeCommandAction?

9

我有一个弹出窗口,里面有一个TextBox,用户应该输入票号,当用户按下回车键后,我希望将票号传递给ViewModel,然后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
另一种方法是使用InputBindings - KeyBinding来触发命令。 - Adrian Fâciu
1
@AdrianFaciu 谢谢,如果您能提供一个简单的例子那就太棒了。我对WPF还比较陌生,需要做一些研究才能弄清楚它的工作原理,所以非常感谢您能提供任何样例。 - Brandon Moore
1个回答

21
你可以使用InputBindings - KeyBinding作为替代方法。 类似于这样:
<TextBox x:Name="TicketNumber">
    <TextBox.InputBindings>
        <KeyBinding Key="Enter"
                    Command="{Binding OpenTicketCommand}" 
                    CommandParameter="{Binding ElementName=TicketNumber,
                                               Path=Text}"/>
    </TextBox.InputBindings>
</TextBox>

这不是正确的答案。事实上,它并没有根据标题回答问题,完全是误导性的。 - jwize

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接