2010-08-10 21 views
5

La mia casella combinata WPF viene popolata con un diverso set di stringhe ogni volta che si fa clic su un pulsante. Ci sono anche altri controlli sulla finestra. La casella combinata è la "prima" (in alto) nella finestra, ma il testo non viene evidenziato. Quando l'utente passa attraverso i controlli, il testo viene evidenziato, ma quando è il primo sulla finestra, non lo fa.Come 'ottenere' la casella combinata WPF PART_EditableTextbox perché la casella combinata non viene evidenziata?

Forse ho bisogno di forzare un'evidenziazione sul controllo della singola casella di testo 'all'interno' della casella combinata stessa, ma come farei questo? Non riuscivo a trovare la 'struttura' interna di questo controllo da nessuna parte. Qualcuno potrebbe aiutare qui?

Jack

risposta

1

io non sono sicuro che sia la soluzione migliore, ma è possibile utilizzare FrameworkElement.FindName per accedere al controllo figlio - è garantito per essere presenti in una casella combinata, perché è una parte fondamentale costituente del controllo.

Ciò detto, non è meglio provare e chiamare .Focus() sul controllo? Questo è probabilmente il motivo per cui, quando fai il tab, viene fornito il momento saliente.

Un'altra opzione è quella di derivare da ComboBox ed esporre la casella di testo figlio come una proprietà che consente di impostarne la selezione o aggiungere un metodo direttamente alla casella combinata per impostarlo automaticamente.

24

per ottenere il controllo TextBox di Combobox è possibile utilizzare

TextBox TxtBox = (TextBox)myCombo.Template.FindName("PART_EditableTextBox", myCombo); 
+7

Durante la creazione (ctor) del modello di casella combinata è nullo - così come si potrebbe farlo durante la creazione? – Sam

+0

^Sfortunatamente non è stato ancora creato. – Asheh

+1

È possibile ignorare/ascoltare 'OnApplyTemplate' –

Problemi correlati