按Enter键时在文本框上执行命令

时间:2017-05-21 07:26:06

标签: c# wpf xaml mvvm

我是WPF的新手,我看到最好的模式调用MVVM。我已经尝试深入了解它,我发现该命令只能在按钮或menuitem等上执行。但我怀疑当我专注于文本框时如何执行ViewModel命令并在我输入时按下回车键完成我的编辑。 我有谷歌这个,但我没有得到任何答案。所以希望你们所有人都帮助我。如何在文本框中按Enter键执行命令?

2 个答案:

答案 0 :(得分:3)

在我看来,最简单的方法是使用KeyBinding,它允许您将KeyGesture绑定到ICommand实现。

在您的情况下,您可以在XAML中写下这样的内容:

<TextBox AcceptsReturn="False">
    <TextBox.InputBindings>
        <KeyBinding Key="Enter" Command="{Binding YourCommand}" />
    </TextBox.InputBindings>
</TextBox>

因此,当您的TextBox被关注并按 Enter 时,YourCommand将被执行。

我希望它可以帮到你。

答案 1 :(得分:0)

您可以使用WPF中的行为来实现您的要求。

在XAML中,

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 

    <TextBox Text="MyText">
        <i:Interaction.Behaviors>
            <i:BehaviorCollection>
                <EventToCommand EventName="TextChanged" Command="{Binding ViewModelCommand}"> 
**// You can provide other events to be triggered in the EventName property based on your requirement like "Focused" or "UnFocused".Focused event will be fired if you enter into edit mode and UnFocused event will be triggered if you press enter key.**
            <i:BehaviorCollection>
        </i:Interaction.Behaviors>
    </TextBox>

在ViewModel.cs中,

Public class ViewModel
{

    private Command viewCommand;

    public ViewModel()
    {
        viewCommand = new Command(CommandMethod);
    }

    public Command ViewModelCommand
    {
        get { return viewCommand }
        set { viewCommand = value}
    }

    private void CommandMethod()
    {
        //This method will hit if you modify enter/delete text in the     TextBox
    }

}