2010-08-10 4 views
5

Meine WPF-Combobox wird mit jedem Klick auf eine Schaltfläche mit einem anderen Satz von Zeichenfolgen gefüllt. Es gibt auch andere Steuerelemente im Fenster. Die Combobox ist die "erste" (oben) im Fenster, aber der Text wird nicht hervorgehoben. Wenn der Benutzer die Steuerelemente durchsucht, wird der Text hervorgehoben, aber wenn er als erster im Fenster angezeigt wird, wird er nicht hervorgehoben.Wie kommt man an die WPF-Combobox PART_EditableTextbox, weil die Combobox nicht hervorgehoben wird?

Vielleicht muss ich eine Hervorhebung auf dem einzelnen Textfeld Steuerelement 'innerhalb' der Combobox selbst erzwingen, aber wie würde ich das tun? Ich konnte nirgends die interne "Struktur" dieser Kontrolle finden. Kann mir hier jemand helfen?

Jack

Antwort

1

Ich bin mir nicht sicher, dass es die beste Lösung ist, aber Sie können FrameworkElement.FindName nutzen das untergeordnete Steuerelement zugreifen - es ist garantiert in einer Combobox sein, weil es ein wichtiger Bestandteil der ist Steuerung.

Das heißt, ist es nicht besser zu versuchen, und .Focus() auf die Steuerung zu nennen? Dies ist wahrscheinlich, warum, wenn Sie auf die Registerkarte, die Hervorhebung bereitgestellt wird. Eine andere Option besteht darin, von ComboBox abzuleiten, und das untergeordnete Textfeld als eine Eigenschaft verfügbar zu machen, die es Ihnen erlaubt, seine Auswahl zu treffen, oder eine Methode direkt zu der Combobox hinzuzufügen, um es für Sie einzustellen.

24

die TextBox von Combobox erhalten Sie

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

Während der Erstellung (ctor) der Combobox Vorlage verwenden können, ist null - so wie würde man es während der Erstellung bekommen? – Sam

+0

^Leider kann man es nicht als noch nicht erstellt. – Asheh

+1

Sie können OnApplyTemplate überschreiben/hören –

Verwandte Themen