Erstellen Sie "Standard" -Text in einem leeren TextBox ohne Fokus mit XAML

8

Ich möchte eine TextBox erstellen, in der ein grauer "Standard" -Text angezeigt wird, wenn es

ist

a) 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?

    
Arsen Zahray 03.05.2012, 09:05
quelle

2 Antworten

16

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:

%Vor%

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ält     
Steve Greatrex 03.05.2012, 09:39
quelle
12

Sie 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.

%Vor%

Der Schlüssel hier ist das Hinzufügen der reference zur DLL-Datei.

%Vor%

Dann kannst du es einfach in XAML so verwenden.

%Vor%     
eandersson 03.05.2012 09:14
quelle

Tags und Links