Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WPF-如何将文本框Enter键绑定到方法?_C#_Wpf_Xaml_Binding_Textbox - Fatal编程技术网

C#WPF-如何将文本框Enter键绑定到方法?

C#WPF-如何将文本框Enter键绑定到方法?,c#,wpf,xaml,binding,textbox,C#,Wpf,Xaml,Binding,Textbox,我有一个文本框,下面有一个“OK”按钮。“OK”按钮运行myRunPanel静态类中的方法,如下所示:RunPanel.RunOK() 我想在文本框中按enter键也执行方法RunPanel.RunOK() 我如何在XAML中执行此操作 我遇到的答案似乎令人困惑,所以我想知道是否有人能帮我。可能是你最好的答案 例如: <Window> <Window.InputBindings> <KeyBinding Command="{Binding SomeCo

我有一个
文本框
,下面有一个“OK”按钮。“OK”按钮运行my
RunPanel
静态类中的方法,如下所示:
RunPanel.RunOK()

我想在
文本框中按enter键
也执行方法
RunPanel.RunOK()

我如何在XAML中执行此操作

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

可能是你最好的答案

例如:

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

这不会帮助您执行在XAML中指定的方法,但是让textbox订阅KeyUp事件,然后检查输入的密钥可以解决问题。在本例中,您可以将RunPanel.RunOK()放在if语句中,如果在文本框中按enter键,则会触发该语句

我如何在XAML中执行此操作

XAML是一种标记语言,您无法在其中真正调用方法。您可以使用ObjectDataProvider绑定到方法,如下所述:

但是,如果希望在单击按钮时执行某些操作,则应该绑定到视图模型的命令,并在该命令的Execute方法中调用静态方法

在XAML中尝试尽可能多地删除所有内容,通常认为这是一种反模式


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

我只是好奇:这是绑定到“F5”键还是“enter”键?是的,我已经做到了这一点-但是我想知道如何用RunPanel.RunOK()替换“SomeCommand”)这是CTRL+F5,作为一个通用示例。我在那里使用了修饰符来演示如何使用键modifiers@ATRunPanel.RunOK()是否返回任何值?如果是这样,请将其包装到一个Getter中,调用以下方法:runokerturntype SomeCommand{get{return RunPanel.RunOk()}}否则您需要搜索如何绑定到一个方法,这有点复杂,但也是可能的。抱歉。我已经编辑了答案,并试图澄清为什么它能解决问题。太好了。非常感谢。祝你在这个网站上的未来更加光明,愿你贡献并获得更多的声誉点和越来越多的访问权,利用社区在这里提供的许多好处,并查看评论链接:-)记住,这里有徽章和帽子,当你支付很多费用时,这不仅是因为你得到了社区的尊重,还因为你获得了一些整洁的特性:-)我知道这个解决方案,但是我的目的是只做这个XAML,因为我认为它更干净,但是我也可以使用它。什么是RunPanel?写在哪里?代码隐藏?还是一些模型?您是否遵循任何模式(mvvm、prism?您正在编写应用程序或控件?
private void textBox_KeyUp(object sender, KeyEventArgs e)
    {
       if(e.Key == Key.Return)
        {
            MessageBox.Show("Enter key pressed, put your method in here!");
        }
    }