2009-12-23 12 views
16

Gibt es eine Möglichkeit zu ermitteln, ob ein Steuerelement (speziell ein System.Windows.Controls.TextBox) in Silverlight konzentriert ist? Ich bin auf der Suche nach so etwas wie die folgenden (was Sie in einem regulären NetcAnwendung sehen würde):Erkennen des Fokus eines Steuerelements in Silverlight

textBox.Focused 

Dies scheint wie etwas einfach und trivial von einer Steuer auszulassen, und doch kann ich nicht finden eine Antwort überall.

aktualisieren

Eine etwas elegantere Lösung, Rob Antwort enthält, ist eine Erweiterungsmethode zu schaffen, etwa so:

public static bool IsFocused(this Control control) 
{ 
    return FocusManager.GetFocusedElement() == control; 
} 

Antwort

27

Sie haben FocusManager

bool b = FocusManager.GetFocusedElement() == textBox; 
+1

Danke. Ich frage mich, warum Microsoft entschieden hat, es auf diese Weise zu handhaben, anstatt wie überall anders gehandhabt zu werden (sogar ihre eigenen Produkte) ... – Dov

+0

Vielleicht hilft es, den Installer kleiner zu halten? –

0

Wie verwenden sobald Sie ein Steuerelement haben, das aus mehr als einem Eingabeelement besteht (das einen Fokus für die Handhabung von Benutzer-Inpu haben muss) t) Fragen der FocusManager wird nicht mehr den Trick machen. Versuchen Sie dies:

private bool HasFocus { get; set; } 

protected override void OnGotFocus(RoutedEventArgs e) 
{ 
    base.OnGotFocus(e); 
    HasFocus = true; 
} 

protected override void OnLostFocus(RoutedEventArgs e) 
{ 
    base.OnLostFocus(e); 
    HasFocus = false; 
} 
Verwandte Themen