How To: Add a watermark to a WPF TextBox

I recently was working on some code where I needed to add a watermark to my WPF TextBox. Now this is not built-in functionality. So i thought of implementing a similar functionality myself. It is quite straightforward to implement this really.

There are a few ways you could do this:

  • You could overlay a TextBlock or Label with the TextBox. Then you bind the watermark to the TextBlock/Label. Finally, you toggle the visibility of the TextBlock based on the contents of the TextBox.
  • Another way to do it, which is really an enhancement over the way described above is to update the ControlTemplate for the TextBox through a custom style, and put the TextBlock and TextBox in it as described above.
  • Yet another way to do this would be to create a custom control which inherits from the TextBox control and overrides the OnApplyTemplate method to use the custom ControlTemplate that contains the overlayed TextBlock/Label and TextBox.

I'm not going to write the code that actually does this, since there are a few pages that describe these techniques in detail. Here are a few links that might help you.

Happy coding!