Ich möchte eine TextBox erstellen, in der ein grauer "Standard" -Text angezeigt wird, wenn es
ista) leer
b) hat den Fokus verloren
Wenn der Benutzer das Textfeld eingibt, sollte der graue "Standard" -Text verschwinden.
Ich habe versucht, dies mit ControlTemplate.Triggers
zu tun, aber ich kann nicht HasFocus
Eigenschaft finden.
Was ist der beste Weg, dies mit XAML zu tun?
Obwohl es keinen wirklichen Vorteil gibt, das Rad neu zu erfinden, könnte es interessant sein zu sehen, wie das gemacht werden kann. Der einfachste Weg dies zu tun (in reinem XAML) ist, ein ControlTemplate
für das TextBox
zu erstellen, das ein TextBlock
überlagert, wenn es nicht fokussiert ist und keinen Text enthält:
Das MultiTrigger
bedeutet "setze Visibility auf Visible, wenn die Eigenschaft Text
leer ist und die TextBox keinen Tastaturfokus hat"
Wenn Sie mehr wiederverwendbar machen möchten, können Sie ein benutzerdefiniertes Steuerelement mit dieser als Standardvorlage und mit einer Dependency-Eigenschaft erstellen, die die Eingabeaufforderungsnachricht
enthältSie können einfach das Erweiterte WPF Toolkit verwenden WatermarkTextBox .
Ich habe anhand Ihres Kommentars, wie Sie die Bibliothek in Ihrem Projekt hinzufügen und verwenden, einen kleinen Leitfaden erstellt.
Schritt 1) Klicken Sie mit der rechten Maustaste auf References
in Ihrem Projekt und wählen Sie Add Reference
.
Schritt 2) Suchen Sie die DLL-Datei WPFToolkit.Extended.dll
und fügen Sie sie hinzu.
Schritt 3) Zuletzt müssen Sie den Code XAML
hinzufügen.
Der Schlüssel hier ist das Hinzufügen der reference
zur DLL-Datei.
Dann kannst du es einfach in XAML
so verwenden.