2017-01-02 36 views
1

我有一个TextBox与下面的“确定”按钮。 'OK'按钮运行我的RunPanel静态类中的方法,如下所示:RunPanel.RunOK();C#WPF - 如何绑定文本框输入键按下方法?

我想按TextBox中输入也执行方法RunPanel.RunOK()

我该如何在XAML中做到这一点?

我遇到的答案似乎令人困惑,所以我想知道如果有人能帮助我。

+0

什么是RunPanel?哪里写的?在代码后面?或某种模式?你正在关注任何模式(mvvm,prism ...)?你正在编写一个应用程序或控件? – WPFUser

回答

0

KeyBinding可能是你最好的选择。

例如:

<Window> 
    <Window.InputBindings> 
    <KeyBinding Command="{Binding SomeCommand, RelativeSource={RelativeSource Self}}" Modifiers="Control" Key="F5"></KeyBinding> 
    </Window.InputBindings> 
</Window> 
+0

我只是好奇:这是绑定到'F5'键或'输入'键? – zx485

+0

是的,我得到了那么远 - 但是我想知道如何用RunPanel.RunOK()替换'SomeCommand'并让它工作? –

+0

@ zx485这是用于CTRL + F5,作为一个通用示例。我在那里使用Modifiers来显示如何使用键修饰符 –

3
private void textBox_KeyUp(object sender, KeyEventArgs e) 
    { 
     if(e.Key == Key.Return) 
     { 
      MessageBox.Show("Enter key pressed, put your method in here!"); 
     } 
    } 

这不会帮助你执行你在XAML规定的方法,但是具有文本订阅KeyUp事件,然后执行在其上输入的密钥检查解决您的问题。在这种情况下,您可以将RunPanel.RunOK()放入if语句中,如果在文本框内按下回车键,则会触发。

+1

对不起。我编辑了答案,并试图澄清为什么它解决了这个问题。 –

+0

完美。谢谢。愿您在本网站的未来光明灿烂,您可以贡献自己的力量,获得许多信誉积分和越来越多的访问权限,并利用社区提供的许多奖励,并查看评论链接:-)请记住,有徽章和帽子,并且当你付出很多会费时,不仅因为你得到了社区的尊重,而且获得了一些整洁的功能:-) – clearlight

+0

我意识到了这个解决方案,但是我的目的是仅仅做这个XAML,因为我认为它更干净,但唉,我可以使用它。 –

0

我怎么能在XAML中做到这一点?

XAML是一个标记语言,你不能真的调用它的方法。您可以使用ObjectDataProvider绑定到一个方法,如下所述:http://www.devcurry.com/2011/03/wpf-4-using-objectdataprovider-for.html

但是,如果您想在点击按钮时执行某些操作,您应该绑定到视图模型的命令,并在Execute方法中调用您的静态方法这个命令。

尽量在XAML中尽可能地尝试所有内容,只是为了消除代码,通常被认为是反模式。

MVVM不是关于消除代码,它主要是关注问题的分离,而C#是一种比XAML更具表现力和更简洁的语言。因此,您应该使用C#语言等编程来实现应用程序的行为,并使用XAML来定义可视化表示和UI的布局。