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”按钮运行myRunPanel
静态类中的方法,如下所示: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!");
}
}