2009-12-23 13 views
16

Esiste un modo per stabilire se un controllo (in particolare System.Windows.Controls.TextBox) è focalizzato su Silverlight? Sto cercando qualcosa di simile al seguente (quello che si vede in una normale applicazione .Net):Rilevazione dello stato attivo di un controllo in Silverlight

textBox.Focused 

Questo mi sembra qualcosa di semplice e banale di lasciare fuori da un controllo, ma non riesco a trovare una risposta ovunque

Aggiornamento

Una soluzione un po 'più elegante, incorporando la risposta di Rob, è quello di creare un metodo di estensione in questo modo:

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

risposta

27

Devi usare FocusManager

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

Grazie. Mi chiedo perché Microsoft abbia deciso di gestirlo in questo modo, invece del modo in cui viene gestito ovunque (anche i propri prodotti) ... – Dov

+0

Forse aiuta a mantenere l'installazione più piccola? –

0

Come appena disponi di un controllo composto da più di un elemento di input (che deve essere attivo per gestire l'inpu dell'utente) t) chiedere a FocusManager di non eseguire più il trucco. Prova questo:

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; 
} 
Problemi correlati