我正在开发一款 Silverlight 应用程序,需要在文本框中输入信息,然后只需按下回车键。但是,我没有找到 onclick 事件,所以我使用了 onkeypressup 事件,并检查是否按下了回车键,如果是,则执行“blah”。
感觉好像还有更好的方法。所以问题是,有吗?
我正在开发一款 Silverlight 应用程序,需要在文本框中输入信息,然后只需按下回车键。但是,我没有找到 onclick 事件,所以我使用了 onkeypressup 事件,并检查是否按下了回车键,如果是,则执行“blah”。
感觉好像还有更好的方法。所以问题是,有吗?
我认为这是捕获Key.Enter的方法。
另外,如果您使用KeyDown事件而不是KeyUp事件,则代码将更易读。
如果您只关心捕获单个控件的Key.Enter,则您的方法是正确的。
您还可以通过使用容器的KeyDown事件(“事件冒泡”)来捕获一组相关控件的Key.Enter。
你真的想把它放在文本框里吗?我会在容器上(例如Grid、Canvas)添加一个onkeyup处理程序,以在表单的任何位置按下按钮。
如果您希望绑定Command属性而不是使用Click事件,则可以使用此方法。首先为Click创建事件处理程序(请参见下文),然后在KeyUp中执行以下操作:
private void MyTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter) SomeButton_Click(this, null);
}
private void SomeButton_Click(object sender, RoutedEventArgs e)
{
ICommand cmd = SomeButton.Command;
if (cmd.CanExecute(null))
{
cmd.Execute(null);
}
}
在使用命令模式时,我使用以下实现:
private void MyTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
BindingExpression b = MyTextBox.GetBindingExpression(TextBox.TextProperty);
if (b != null)
b.UpdateSource();
ICommand cmd = SomeButton.Command;
if (cmd.CanExecute(null))
cmd.Execute(null);
}
}
嗯,我对Silverlight还比较陌生,我为一个具有一个DependencyProperty Button的按钮创建了HitEnter行为。
然后我手动在代码中连接Button和Behavior,当按下回车键时,我会调用按钮上的命令。