【问题标题】:How to simulate TAB key press in Silverlight when user presses ENTER with MVVM?当用户使用 MVVM 按下 ENTER 时,如何在 Silverlight 中模拟 TAB 键按下?
【发布时间】:2011-09-09 10:10:07
【问题描述】:

您将如何在 Silverlight 项目中模拟 MVVM 中的按键?

我想在用户按下 ENTER 时模拟 TAB 键按下,所以它移动到下一个文本框

【问题讨论】:

  • 你不能依靠命令而不是模拟按键吗?你的实际要求是什么?

标签: silverlight key mvvm-light keypress simulate


【解决方案1】:

只需处理KeyUp event,您就可以在其中检查按下了哪个键。 然后,调用下一个控件的Focus method。 不要忘记将Handled property 设置为true

示例代码:

// Handler for TextBox1
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        TextBox2.Focus();
        e.Handled = true;
    }
}

您也可以考虑使用TabIndex property 遍历所有控件以查找下一个可聚焦元素。

您甚至可以将所有内容包装在可附加的行为中,以简化接线。

【讨论】:

  • 很好的解决方案,但我使用 MVVM。我想通过各种方式避免将代码硬编码到 UI 元素。
  • 我不知道你最后的评论是什么意思
  • EventToCommand 是一种可以在特定事件发生时触发 ICommand 的行为。 EX:KeyDown 事件可以触发 VM 的 KeyInputCOMmand。看看这篇文章:mvvmlight.codeplex.com/SourceControl/changeset/view/…
  • 我仍然不明白这将如何让我转到下一个文本框。在我的视图模型中调用命令并不能解决任何问题,我仍然必须在 xaml 中为每个文本框硬编码名称...
  • 问题相关:stackoverflow.com/questions/1354903/…。我在这里找到了一个简单的解决方案:gist.github.com/4576803
【解决方案2】:

这取决于你想在这里实现什么?如果您只是尝试执行与按下某个键时将执行的代码相同的代码,那么只需构建您的代码以允许这样做!

有关 UI 控件的自动化、模拟键和鼠标事件,请参阅 MSDN:

UI Automation of a Silverlight Custom Control

【讨论】:

    猜你喜欢
    • 2012-02-19
    • 1970-01-01
    • 2019-10-31
    • 2023-03-28
    • 2011-04-26
    • 2021-12-26
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多