【问题标题】:C# WPF - How to Bind TextBox Enter Key Press to a Method?C# WPF - 如何将 TextBox Enter Key Press 绑定到方法?
【发布时间】:2017-05-16 04:07:58
【问题描述】:

我有一个TextBox,下方有一个“确定”按钮。 “确定”按钮运行我的 RunPanel 静态类中的方法,如下所示:RunPanel.RunOK();

我想在TextBox 中按enter 来执行RunPanel.RunOK() 方法。

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

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

【问题讨论】:

  • 什么是RunPanel?那是在哪里写的?在后面的代码中?或一些模型?您正在遵循任何模式(mvvm,prism ...)?您正在编写应用程序或控件?

标签: c# wpf xaml binding textbox


【解决方案1】:
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 语句中,如果在文本框中按下回车键,它将触发。

【讨论】:

  • 对不起。我已经编辑了答案,并试图就它解决问题的原因提供一些说明。
  • 完美。谢谢你。愿您在此站点的未来一片光明,愿您做出贡献并获得许多声誉积分和越来越多的访问权限,并利用社区在此处提供的许多赏金,并查看评论链接:-) 请记住,有徽章和帽子,并且当您支付大量会费时,您不仅会得到社区的尊重,还会获得一些简洁的功能:-)
  • 我知道这个解决方案,但是我的目的是只做这个 XAML,因为我认为它更干净,但是我也可以使用它。
【解决方案2】:

KeyBinding 可能是你最好的选择。

例如:

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

【讨论】:

  • 我只是好奇:这是绑定到“F5”键还是“输入”键?
  • 是的,我已经做到了 - 但是我想知道如何用 RunPanel.RunOK() 替换“SomeCommand”并让它工作?
  • @zx485 这是用于 CTRL + F5,作为一般示例。我在那里使用了修饰符来展示如何使用键修饰符
  • @AT RunPanel.RunOK() 返回任何值吗?如果是这样,将它包装到一个 Getter 中,调用方法: RunOKReturnType SomeCommand { get { return RunPanel.RunOk() } } 否则你想搜索如何绑定到一个方法,这有点复杂但也是可能的。跨度>
【解决方案3】:

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

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

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

在 XAML 中尝试一切或尽可能多地仅仅因为你可以并且只是为了消除代码通常被认为是一种反模式。

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

【讨论】:

    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多