Click here to Skip to main content
13,594,513 members
Click here to Skip to main content
Add your own
alternative version


91 bookmarked
Posted 15 Jun 2008
Licenced CPOL

A WatermarkTextBox in 3 lines of XAML

, 25 Jul 2008
Rate this:
Please Sign up or sign in to vote.
Another example of how XAML can solve issues that most developers automatically assume will require "coding".


Published examples demonstrating how to create a WatermarkTextBox in WPF, including the 'InfoTextBox' control in Kevin Moore's popular "Bag-O-Tricks" sample library always seem to involve a significant amount of code-behind, when a fully-functional version can be built with just three lines of XAML, leveraging WPF's built in BooleanToVisibilityConverter.

WaterMarkTextBoxDemo - Click to enlarge image

The complete project includes two variations on this functionality.


This example stems from a discussion in a recent .NET User's Group meeting, in which several experienced WPF developers complained about the removal of the WatermarkTextBox control in the latest version of Silverlight. They all jumped to the conclusion (which I think is very common among developers) that supporting similar functionality would require "coding" a custom control of some kind.

Although this is a trivial example, I think the related question of when to use XAML vs. code (and, as possibly illustrated in my second example, knowing when you've begun to cross over into "hacking via markup"), will be one of several interesting XAML-related best practice debates on many real-world multi-developer projects -- especially when faced with a confusing mixture of seemingly random implementation choices around the third dev. cycle on a large code base.

Update: Microsoft has announced that it will add a "WaterMark" property to the TextBox in a future version of Silverlight, and has made the original WatermarkTextBox code available for download.

Other Projects by Andy L.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

United States United States
I started out writing applications in C for a software development shop in Japan, did alot of work in C++/MFC, and some DirectX, at two Silicon Valley startups, and have been working with C# and Windows Forms ever since the release of .Net 1.0. Although I took a couple intro. to CS courses at CAL (Berkeley), my degree was actually in Asian Studies, and I learned to program "in the trenches". I was also the .Net evangelist at my most recent company, authoring internal white papers on .Net, sending out a weekly ".Net FYI" e-mail, conducting .Net training, and sweating the truth out of job candidates who claimed to have .Net experience (You'd be amazed at the number of Silicon Valley engineers who list "three years of C#" on their resumes, who are unable to explain how to hook up a simple event handler, or identify basic terms like "reflection", "attributes" -- or "Richter" and "Löwy").

You may also be interested in...

Comments and Discussions

QuestionMight need a Rectangle? Pin
AvidFan28-Apr-17 1:52
memberAvidFan28-Apr-17 1:52 
QuestionVery sweet Pin
Member 1793302-Nov-16 4:27
memberMember 1793302-Nov-16 4:27 
QuestionMy Vote of 5 Pin
Member 113834634-May-16 20:38
memberMember 113834634-May-16 20:38 
GeneralMy vote of 5 Pin
Eugene Sadovoi7-Apr-16 10:07
memberEugene Sadovoi7-Apr-16 10:07 
QuestionExcellent coding Pin
Anindya0026-Feb-16 3:36
memberAnindya0026-Feb-16 3:36 
GeneralMy vote of 2 Pin
Ashish Jain(Be Jovial)31-Aug-15 8:47
memberAshish Jain(Be Jovial)31-Aug-15 8:47 
QuestionWatermark on top Pin
Jérôme Vuarand19-Aug-15 7:39
memberJérôme Vuarand19-Aug-15 7:39 
QuestionPath=Text.IsEmpty - What is this? Pin
supernorb6-Sep-14 1:14
membersupernorb6-Sep-14 1:14 
AnswerRe: Path=Text.IsEmpty - What is this? Pin
Christopher Chappell19-Apr-15 6:10
memberChristopher Chappell19-Apr-15 6:10 
QuestionComboBox Pin
avinaxsht8-Jan-14 2:23
professionalavinaxsht8-Jan-14 2:23 
QuestionAmazing artical Pin
Priyank Thakkar21-Nov-13 4:39
memberPriyank Thakkar21-Nov-13 4:39 
GeneralMy vote of 5 Pin
iman khalil27-Aug-12 5:57
memberiman khalil27-Aug-12 5:57 
QuestionExcellent post Pin
patelsachin13-Dec-11 3:13
memberpatelsachin13-Dec-11 3:13 
GeneralMy vote of 1 Pin
__Lj__28-Sep-10 4:12
member__Lj__28-Sep-10 4:12 
GeneralHere's another no-code version, supports images too! Pin
awcullen214-Oct-08 4:36
memberawcullen214-Oct-08 4:36 
GeneralSimply great Pin
parxs24-Jun-08 5:09
memberparxs24-Jun-08 5:09 
GeneralEasy solution, but think about efficiency Pin
Dusan Kocurek17-Jun-08 8:45
memberDusan Kocurek17-Jun-08 8:45 
GeneralRe: Easy solution, but think about efficiency Pin
Josh Smith26-Jul-08 9:43
mvpJosh Smith26-Jul-08 9:43 
GeneralPerfect Timing Pin
jackmos17-Jun-08 3:54
memberjackmos17-Jun-08 3:54 
GeneralGood one Pin
Uro15-Jun-08 22:48
memberUro15-Jun-08 22:48 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web01-2016 | 2.8.180621.3 | Last Updated 26 Jul 2008
Article Copyright 2008 by AndyL2
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid