Facebook hat beispielsweise einen Hinweistext "Suchen" im Textfeld "Suchen", wenn das Textfeld leer ist.
Wie erreicht man das mit WPF-Textfeldern?
.net
wpf
user-interface
textbox
Louis Rhys
quelle
quelle
Antworten:
Sie können dies viel einfacher mit a
VisualBrush
und einigen Auslösern in a erreichenStyle
:Um die Wiederverwendbarkeit zu verbessern
Style
, können Sie auch eine Reihe von angehängten Eigenschaften erstellen, um den tatsächlichen Text, die Farbe, die Ausrichtung usw. des Cue-Banners zu steuern.quelle
Dies ist meine einfache Lösung, angepasst von Microsoft ( https://code.msdn.microsoft.com/windowsapps/How-to-add-a-hint-text-to-ed66a3c6 )
quelle
IsHitTestVisible="False"
Was ist mit materialDesign HintAssist? Ich benutze dies, was Sie auch schwebende Hinweise hinzufügen können:
i installierte Material Design mit Nuget Paket dort Installationsanleitung in ist Dokumentation Link
quelle
Tun Sie dies im Code-Behind, indem Sie die Textfarbe zunächst auf Grau setzen und Ereignishandler hinzufügen, um den Tastaturfokus zu gewinnen und zu verlieren.
Dann die Event-Handler:
quelle
Sie müssen ein benutzerdefiniertes Steuerelement erstellen, indem Sie das Textfeld erben. Der folgende Link enthält ein hervorragendes Beispiel für das Beispiel eines Suchtextfelds. Bitte schauen Sie sich das an
http://davidowens.wordpress.com/2009/02/18/wpf-search-text-box/
quelle
Sie können dies auf sehr einfache Weise tun. Die Idee ist, ein Etikett an der gleichen Stelle wie Ihr Textfeld zu platzieren. Ihr Etikett wird angezeigt, wenn das Textfeld keinen Text und keinen Fokus enthält.
Bonus: Wenn Sie einen Standardwert für Ihre TextBox haben möchten, müssen Sie diesen nach dem Senden von Daten festlegen (zum Beispiel: "InputText" = "PlaceHolder Text Here", falls leer).
quelle
Ein anderer Ansatz ;-)
das funktioniert auch mit
PasswordBox
. Wenn Sie es mit verwenden möchtenTextBox
, tauschen Sie es einfachPasswordChanged
mit ausTextChanged
.XAML:
CodeBehind:
quelle
Ich bin einmal in die gleiche Situation geraten und habe sie folgendermaßen gelöst. Ich habe nur die Anforderungen eines Hinweisfelds erfüllt. Sie können es interaktiver gestalten, indem Sie Effekte und andere Dinge zu anderen Ereignissen wie Fokus usw. hinzufügen.
WPF-CODE (Ich habe das Styling entfernt, um es lesbar zu machen)
C # -Code
quelle
Eine andere Lösung ist die Verwendung eines WPF-Toolkits wie MahApps.Metro. Es hat viele schöne Funktionen, wie ein Textfeld Wasserzeichen:
Controls:TextBoxHelper.Watermark="Search..."
Siehe http://mahapps.com/controls/textbox.html
quelle
Ich habe die Ereignisse zum Erhalten und Verlieren des Fokus verwendet:
Es funktioniert gut, aber der Text ist immer noch grau. Muss aufgeräumt werden. Ich habe VB.NET verwendet
quelle
quelle
Das ist meine Meinung:
Die meisten anderen Antworten, einschließlich der obersten, weisen meiner Meinung nach Mängel auf.
Diese Lösung funktioniert unter allen Umständen. Pure XAML, leicht wiederverwendbar.
quelle
Ich erreiche dies mit einem
VisualBrush
und einigen Auslösern in einemStyle
Vorschlag von :sellmeadog
.@sellmeadog: Anwendung läuft, bt Design wird nicht geladen ... der folgende Fehler tritt auf: Mehrdeutige Typreferenz . Ein Typ mit dem Namen 'StaticExtension' kommt in mindestens zwei Namespaces vor: 'MS.Internal.Metadata.ExposedTypes.Xaml' und 'System.Windows.Markup'. Ziehen Sie in Betracht, die XmlnsDefinition-Attribute der Assembly anzupassen. Ich verwende .net 3.5
quelle
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
zu<Trigger Property="Text" Value="">
Für WPF gibt es keinen Weg. Du musst es nachahmen. Siehe dieses Beispiel . Eine sekundäre (flockige Lösung) besteht darin, ein WinForms-Benutzersteuerelement zu hosten, das von TextBox erbt, und die Nachricht EM_SETCUEBANNER an das Bearbeitungssteuerelement zu senden. dh.
Wenn Sie einen WinForm-Steuerungsansatz hosten möchten, habe ich bereits ein Framework namens BitFlex Framework, das diese Implementierung enthält und das Sie hier kostenlos herunterladen können .
Hier ist ein Artikel über BitFlex, wenn Sie weitere Informationen wünschen. Sie werden feststellen, dass wenn Sie nach Steuerelementen im Windows Explorer-Stil suchen, diese im Allgemeinen nie sofort verfügbar sind. Da WPF im Allgemeinen nicht mit Handles funktioniert, können Sie keinen einfachen Wrapper um Win32 oder ein vorhandenes Steuerelement schreiben, wie Sie es können mit WinForms.
Bildschirmfoto:
quelle