2010-11-19 9 views
4

Ich habe eine Benutzersteuerung, bestehend aus einem Textfeld und zwei Tasten.
das Steuerelement wird in einem Dialogfeld platziert und wenn ich über den Dialog steuert, erfahre ich richtiges Verhalten - zuerst das Textfeld ist fokussiert,
dann die eine Taste, dann die andere.
Wenn jedoch ich die Benutzersteuerung als Ziel einer Tastenkombination
Satz mit „_“ für ein Etikett (sagen wir Presse alt + r für „_Row count“), um das Benutzersteuer
keinen Fokus erhalten. Versucht, "gotkeyboardfocus" zu implementieren und
den Fokus auf die Textbox dort zu setzen, aber es funktioniert nicht.Fokus nicht zielgerichtete Benutzersteuerung richtig eingeben

Antwort

1

Ein Benutzersteuerelement ist standardmäßig nicht fokussierbar, daher müssen Sie es einschalten, damit es funktioniert.

<my:UserControl1 x:Name="userControl11" Focusable="True" .../> 
<Label Target="userControl11">_Row count</Label> 

Und dann können Sie die gewünschte Textfeld innerhalb des Usercontrol Fokus, wenn es Fokus recieves

private void UserControl_GotFocus(object sender, RoutedEventArgs e) 
{ 
    textBox.Focus(); 
} 
+0

Die GotFocus/Focus-Technik scheint ziemlich hässlich, aber ich bin mir nicht sicher, einen besseren Weg zu finden. –

+0

In der Tat tut es .. Einstellung userControl.textBox funktioniert nicht, so kann ich nicht an einen besseren Weg denken entweder –

+0

dies funktioniert, danke. Ich würde einfach im Event-Handler darauf achten, dass das Objekt noch nicht fokussiert ist - sonst kann man es nicht weglassen. – Greg

0

Hallo Ich habe vor kurzem Fokus Problem gestoßen. Was ich getan habe, ist eine Methode namens SetFocus() aus meiner Benutzerkontrolle zu erstellen. Dann setze ich den Fokus innerhalb dieses Benutzersteuerelements direkt auf mein Textbox-Steuerelement nach dem Aufruf von .SetFocus() vom Consumer.

public void SetFocus() 
{ 
this.txtCommand.Focus(); 
}