我创建了一个虚拟键盘用户控件,以便在我的应用程序中的多个窗口中使用。我想知道如何在按下某个键时将其输入到窗口中的文本框中。
我正在寻找的是这样的:
private void keyboardKey_Click(object sender, RoutedEventArgs e){
var key = sender as Button;
textbox.Text += key.Content;
}
Run Code Online (Sandbox Code Playgroud)
例如,如果我按下“a”键,则“a”会添加到文本框中。
我的想法倾向于某种绑定属性,但由于我是 WPF 的新手,我不知道从哪里开始。就像是
<local:QWERTYKeyboard TextboxBinding="TextboxName"/>
Run Code Online (Sandbox Code Playgroud)
谢谢
这是一项相当复杂的任务。幸运的是,关于这个主题有几个很好的教程。
我建议您阅读以下两个教程:
特别是第一个应该包含一个示例应用程序,它应该可以帮助您入门。
对于有关将文本放入 TextBox 的特定问题。一种(幼稚的)实现是跟踪焦点。
您的虚拟键盘可能具有包含当前焦点文本框的属性:
public TextBox FocusedTextBox {get;set;}
Run Code Online (Sandbox Code Playgroud)
并且您应用的每个文本框都可以根据 GotFocus 事件更新属性:
private void txtBox_GotFocus(object sender, RoutedEventArgs e)
{
// Set virtual keyboards' active textbox
this.VirtualKeyboard.FocusedTextBox = txtBox;
}
Run Code Online (Sandbox Code Playgroud)
现在在您的 Virtualkeyboard 中,当按下“a”时,您可以更新 TextBox 的内容:
private void UserPressedVirtualKeyboard(object sender, RoutedEventArgs e)
{
this.VirtualKeyboard.FocusedTextBox.Text = this.VirtualKeyboard.FocusedTextBox.Text + pressedChar;
}
Run Code Online (Sandbox Code Playgroud)