在Silverlight中按Text键

时间:2008-11-23 20:33:55

标签: c# silverlight silverlight-2.0

我正在开发一个silverlight应用程序,您需要将信息输入文本框,然后点击回车。好吧,没有onclick事件,我可以找到,所以我做的是使用onkeypressup事件并检查是否是按下的回车键,如果这样做“blah”。

感觉就像有更好的方法来做到这一点。所以问题是,有吗?

5 个答案:

答案 0 :(得分:12)

我认为这是捕捉Key.Enter的方法。

此外,如果您使用KeyDown事件而不是KeyUp事件,您的代码将更具可读性。

如果您只关心捕获单个控件的Key.Enter,那么您的方法是正确的。

您还可以使用容器的KeyDown事件(“Event Bubbling”)捕获一组相关控件的Key.Enter。

答案 1 :(得分:6)

你真的想在文本框中使用它吗?我会在容器上放一个onkeyup处理程序(例如Grid,Canvas),按下表单上任意位置的按钮。

答案 2 :(得分:5)

如果您使用想要绑定Command属性而不是使用Click事件,这将有效。首先为Click创建一个事件处理程序(见下文),然后在KeyUp do:

中创建
    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);
        }
    }

答案 3 :(得分:1)

使用命令模式时使用以下实现:

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);
    }
}

按Enter键时,文本框的数据源不会更新,命令将使用旧值。因此,您必须在执行命令之前调用UpdateSource。

当然,您可以在比文本框更高的级别上捕获事件。

答案 4 :(得分:0)

好吧,我是Silverlight的新手,我创建了一个具有一个DependencyProperty Button的按钮的HitEnter beahaviour。

我操纵连接按钮和行为(在后面的代码中)然后当输入被击中时我在按钮上输入命令。

相关问题