c# - WPF:使用虚拟键盘

标签 c# wpf xaml

我已经创建了一个虚拟键盘用户控件,以便在我的应用程序中跨多个窗口使用。我想知道如何在按下某个键时将其输入到窗口中的文本框中。

我正在寻找的是这样的东西:

private void keyboardKey_Click(object sender, RoutedEventArgs e){
var key = sender as Button;
textbox.Text += key.Content;
}

例如,如果我按下“a”键,则“a”会添加到文本框。

我的想法倾向于某种绑定(bind)属性,但由于我是 WPF 的新手,我不知道从哪里开始。有点像

<local:QWERTYKeyboard TextboxBinding="TextboxName"/>

谢谢

最佳答案

这是一项相当复杂的任务。幸运的是,有几个关于这个主题的好教程。

我建议您学习这两个教程:

特别是第一个应该包含一个示例应用程序,可以帮助您入门。

关于将文本放入 TextBox 的特定问题。一种(天真的)实现是跟踪 focus .

您的虚拟键盘可能具有包含当前焦点文本框的属性:

public TextBox FocusedTextBox {get;set;}

并且您应用的每个文本框都可以根据 GotFocus 事件更新属性:

private void txtBox_GotFocus(object sender, RoutedEventArgs e)
{
    // Set virtual keyboards' active textbox
    this.VirtualKeyboard.FocusedTextBox = txtBox;
}

现在在您的虚拟键盘中,当按下“a”时,您可以只更新文本框的内容:

private void UserPressedVirtualKeyboard(object sender, RoutedEventArgs e)
{
    this.VirtualKeyboard.FocusedTextBox.Text = this.VirtualKeyboard.FocusedTextBox.Text + pressedChar;
}

关于c# - WPF:使用虚拟键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48911782/

相关文章:

c# - Visual Studio Windows Phone 7 播放声音

c# - WPF .NET4.0 是否有等效的 DependencyObject Collection<T>?

c# - Entity Framework 中的异常处理

c# - WPF 工具包 DataGridCell 样式 DataTrigger

c# - Caliburn micro 在使用 mef 时找不到 MainView

wpf - 在 XAML 中包装另一个控件的控件模板

c# - 计算给定水平线处的形状宽度

c# - 摇动动画(3d版)

c# - VSIX 窗口 - 执行 ICommand 的快捷键

wpf - VsBrush 在 WPF ResourceDictionary 中不起作用