Wie implementieren Sie Standardtext für ein Suchfeld in WPF?

7

Ich möchte etwas genau wie " den Standardtext im Suchfeld ändern " für eine WPF-Suche TextBox. Die Box sollte einen ausgegrauten "Suche" -Text anzeigen, wenn sie leer ist, und dann sollte sie normal funktionieren, wenn Text eingegeben wird. Der verlinkte Artikel zeigt, wie man das in Javascript macht. Wie würde man diesen Pfad in WPF starten? Die beste Idee, die ich bisher hatte, ist ein weiteres Textfeld über dem Hauptfenster, das unsichtbar wird, wenn das Such-Textfeld den Fokus oder Text erhält.

    
Yostage 21.12.2008, 08:41
quelle

6 Antworten

7

Probieren Sie das InfoTextBox-Beispiel aus Kevin Moores Bag-o-Tricks. Sie können es herunterladen von Ссылка

    
Abhijeet 21.12.2008, 10:46
quelle
17

Dieser Stil zeigt Text unter Verwendung der Hintergrundeigenschaft und eines Visualbrush an. Sobald die Steuerung den Fokus erhält, wird der Text entfernt.

%Vor%     
Carl L 18.04.2011 19:11
quelle
2

Der beste Weg, denke ich für diese Art von Dingen ist, den Hintergrund mit einem visuellen Pinsel zu setzen. Mit dem visuellen Pinsel können Sie einen Hintergrund mit Visual Elements zeichnen und ihn mit einem Auslöser kombinieren, der darauf basiert, dass Text leer ist und fertig ist.

Beispiel für leere List Box-Nachricht ist hier, im Grunde die gleiche Sache. Ссылка

    
Adam Mills 16.08.2010 13:48
quelle
1

Wie immer in WPF gibt es viele Möglichkeiten, Ihr Ziel zu erreichen.

Der vielleicht sauberste Weg besteht darin, TextBox abzuleiten und eine neue Eigenschaft namens HintText hinzuzufügen. Die Vorlage für Ihr Steuerelement würde HintText (wahrscheinlich kursiv und grau) anzeigen, solange Text leer ist ( "" ). Andernfalls würde das Text genau wie ein normales TextBox angezeigt.

Eine Alternative, bei der Sie kein eigenes Steuerelement schreiben müssen, besteht darin, TextBox neu zu definieren und die Eigenschaft Tag zu verwenden, um den Hinweistext zu speichern.

Eine andere Alternative ist, ein UserControl zu schreiben, das ein TextBox mit einem TextBlock innerhalb desselben Grid kombiniert. Der TextBlock würde den Hinweistext enthalten und würde nur dann angezeigt werden, wenn TextBox Text leer ist. Dies ist wahrscheinlich am einfachsten zu erreichen, ist aber auch am wenigsten flexibel.

    
Kent Boogaart 21.12.2008 10:45
quelle
1

Ich denke, dass die WatermarkTextBox, die in dem erweiterten WPF-Toolkit enthalten ist, genau das tut, was Sie wollen.

Ссылка

    
Thomas Ortner 08.08.2012 19:46
quelle
0

Sie könnten das Textfeld in grauen Text umwandeln, wenn es leer ist, und eine Variable, die Ihnen sagt, dass es leer ist. Wenn Sie auf Suchen klicken, wird nicht nach "Suchen ..."

gesucht

Oder Sie könnten etwas Ähnliches verwenden, was Sie sagen, aber statt eines Textfelds oben könnten Sie Text unten haben. Wenn oben ein Textfeld mit transparentem Hintergrund und unten ein Label mit "Suchen" vorhanden ist, wenn das obere Textfeld leer ist, sollte das Problem gelöst werden.

    
Artur Carvalho 21.12.2008 09:53
quelle

Tags und Links