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.
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. Ссылка
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.
Ich denke, dass die WatermarkTextBox, die in dem erweiterten WPF-Toolkit enthalten ist, genau das tut, was Sie wollen.
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 ..."
gesuchtOder 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.