Wie verwende ich TextBox.Watermark in Silverlight 4?

8

Beim Durchsuchen der MSDN-Dokumentation stoßen Sie möglicherweise auf dieses Juwel: TextBox.Watermark.

"Awesome! Ich wollte eine integrierte Möglichkeit, Wasserzeichen auf meinen Textfeldern zu erstellen! Das ist großartig, lass mich weitermachen und setze das in XAML!"

%Vor%

Wenn Sie das ausführen, bekommen Sie leider nicht, was Sie erwarten:

Und das Detail:

Was ist das? Sehen Sie sich die MSDN-Dokumentation genau an:

Das stimmt. Es wird in Silverlight 4 unterstützt, aber es sagt auch "Verwenden Sie nicht in einer Silverlight 4-Anwendung". Wenn Sie es verwenden, erhalten Sie eine System.NotImplemented-Ausnahme. Um dies zu überprüfen, ist hier der Code für die über Reflector dekompilierte Eigenschaft:

%Vor%

Da ist es - es löst eine Ausnahme aus, wenn es nicht im Entwurfsmodus ist. Das ergibt keinen Sinn oder? Warum sollte Microsoft das tun?

Leider habe ich noch keine definitive Antwort gefunden, aber wenn ich raten musste, ist es, weil Microsoft plant, ein Watermark-Verhalten für das TextBox-Steuerelement in einer zukünftigen Version (vielleicht v5) zu implementieren und diese Eigenschaft effektiv reservieren wollte Steuerelemente von Drittanbietern erstellen keine Unterklasse von TextBox und erstellen ihre eigene Watermark-Eigenschaft. Ich kenne mindestens einen Steuerelementanbieter, ComponentOne, der über ein Steuerelement verfügt, das von TextBox erbt und eine Watermark-Eigenschaft bereitstellt. Mir scheint, dass dies Microsofts Methode ist, Leute davon abzuhalten, diesen Eigenschaftsnamen für ihre eigenen TextBox-Unterklassen zu verwenden.

    
Unknown 03.04.2012, 12:11
quelle

5 Antworten

14

Erstellen Sie ein Klassenbibliotheksprojekt. Add Class File verwenden Sie den folgenden Code ..... Danach fügen Sie die In dieser DLL In Ihrem Projekt.

%Vor%

XAML:

%Vor%     
mani kandan 05.04.2012, 05:09
quelle
3

Ich habe @mani kandans Lösung leicht überarbeitet, um den Konstruktionszeitfehler zu beheben, wenn die Wasserzeicheneigenschaft nicht gesetzt ist. Außerdem wurde eine HasValue-Boolean-Eigenschaft hinzugefügt, um leicht überprüfen zu können, ob der Benutzer Text in die TextBox eingegeben hat, und zuletzt geändert wurde, um Einträge mit allen Whitespaces als Nicht-Einträge zu behandeln (d. H. Weiterhin Wasserzeichen anzuzeigen).

Überarbeiteter Code:

%Vor%     
Dave Marley 05.09.2012 17:57
quelle
2

Nun, Sie können es erfolgreich in Silverlight 5

verwenden

Probieren Sie diesen Link aus: TextBox.Watermark

Ich verwende erfolgreich die WatermarkTextBox in einer Silverlight 5 MVVM-Anwendung.

    
Unknown 10.04.2012 10:33
quelle
2

Erstellen Sie ein Klassenbibliotheksprojekt. Fügen Sie Klassendatei mit dem folgenden Code hinzu

%Vor%

XAML:

%Vor%     
user1737877 11.10.2012 11:22
quelle
2

Sehen Sie sich dies anhand von Verhaltensweisen an

%Vor%

XAML

%Vor%     
Aleksey Bykov 30.11.2012 17:42
quelle

Tags und Links