WPF: Festlegen des Tastaturfokus in einem Benutzersteuerelement? (Probleme mit KeyBinding)

Ich habe eine App, die ein Hauptfenster hat, das eine Reihe von Dingen enthält. Von Zeit zu Zeit wird der Benutzer etwas tun, um etwas anderes im Hauptfenster anzuzeigen und vorübergehend auszublenden.

Dazu mache ich das äußerste Element im Hauptfenster zu einem Raster ohne definierte Zeilen oder Spalten. Jedes Element im Raster füllt dann die eine einzelne Zelle im Raster vollständig aus und zeichnet über die anderen.

Meine regulären Daten befinden sich also im ersten Element des Rasters, und mein temporäres Element ist ein UserControl als zweites Element des Rasters, das normalerweise auf Sichtbarkeit = Reduziert gesetzt ist.

Bis auf das KeyBinding funktioniert alles einwandfrei. Wenn der entsprechende Befehl in den regulären Datenpaketen ausgelöst wird, wird die Sichtbarkeit im UserControl auf Sichtbar festgelegt und deckt die regulären Datenpakete vollständig ab. Wenn der Benutzer auf die Schaltfläche "Schließen" im UserControl klickt, wird die Sichtbarkeit wieder auf "Reduziert" gesetzt, und es wird ausgeblendet und die regulären Daten werden angezeigt.

Mein Problem ist mit KeyBindings. Ich habe ein paar auf dem UserControl definiert - das sollte nicht im Hauptfenster definiert werden - und sie funktionieren nicht. Oder besser gesagt, sie funktionieren einwandfrei, wenn ich in das UserControl klicke, aber erst, wenn ich es tue.

Ich brauche sie, um zu arbeiten, sobald das UserControl sichtbar gemacht wird, ohne dass der Benutzer auf das UserControl klicken muss.

Ich vermute, dass dies etwas mit dem Tastaturfokus zu tun hat - aber ich konnte keine Möglichkeit finden, den Fokus auf das UserControl zu setzen. Hier ist die Sache - das einzige Element innerhalb des UserControl ist ein Tab-Steuerelement, dessen Registerkarten alle dynamisch über Vorlagen erstellt werden. Zum Zeitpunkt der Kompilierung sind keine Elemente bekannt, auf die ich explizit verweisen und an KeyBoard.Focus () übergeben kann.

Also, habe ich Recht, wenn ich denke, dass es ein Mangel an Fokus ist, der das Problem verursacht? Und wenn ja, wie kann ich den Fokus auf ein Element in einem TabControl setzen, wenn ich nicht einmal weiß, wie viele Registerkarten es gibt, geschweige denn, welche ausgewählt ist?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage