Ich habe ein TextBox UserControl, das ein OnScreenKeyboard zeigt, indem ich darauf klicke. Die Codebehind meiner TextBox, die die OnScreenKeyboard beginnt wie folgt aussieht:Selfmade OnScreenKeyboard benötigt zweites Tippen, um zu reagieren
private void TextBoxText_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
TextBox textbox = sender as TextBox;
US_Keyboard keyboardWindow = new US_Keyboard(textbox, Window.GetWindow(this));
if (keyboardWindow.ShowDialog() == true)
textbox.Text = keyboardWindow.InputSource.Text;
}
Die OnScreenKeyboard eine partielle Klasse ist, die aus Fenster erbt. Der Konstruktor der OnScreenKeyboard sieht wie folgt aus:
public US_Keyboard(TextBox owner, Window wndOwner)
{
InitializeComponent();
this.Owner = wndOwner;
this.DataContext = this;
//Delete text in textbox
if (InputSource.Text.Length > 0)
{
OldTextBoxValue = InputSource.Text;
InputSource.Text = "";
}
//Set caret to start point of textbox
AdornerLayer layer = AdornerLayer.GetAdornerLayer(owner);
CaretAdorner adorner = new CaretAdorner(owner);
adorner.OffsetX = _CaretOffsetXDefault;
layer.Add(adorner);
_adorner = adorner;
_layer = layer;
SetKeyboardSize();
SetKeyboardPosition();
}
Bisher funktioniert alles einwandfrei, bis auf eine Sache: Nach dem OnScreenKeyboard-Fenster erscheint, braucht es einen zweiten Hahn zu reagieren. Es sieht so aus, als hätte es keinen Fokus und benötigt einen Klick, um den Fokus zu bekommen. Wie kann ich das beheben?
Ich habe bereits versucht, die folgenden in den Konstruktor, aber es hilft nicht:
this.Focus();
Mögliche Duplikate von [WPF Fenster Set Fokus] (https://Stackoverflow.com/questions/6395645/wpf-window-set-focus) – Mahmoud
Es klingt wie die gleiche Frage, aber die Lösung funktioniert nicht für mich –
Ich wäre mehr besorgt über Fokus benötigt ... sollte nicht eine Bildschirmtastatur funktionieren idealerweise durch Empfangen von Mausklicks, während der primäre Eingabefokus in einer anderen Anwendung bleibt, die die Eingabe erhält? – grek40