silverlight4においてはTextBoxのWatermarkはサポートされていない。
MSDNを参照すると、Watermarkプロパティ自体は存在するのだが、「Silverlight 4 アプリケーションでは使用しないでください。」と記載があるため使えない。
じゃあプロパティ追加するなよ!などと言っていても仕方がないので、実現方法を考えなければならない。
いや、実現方法は考えなくていい。なぜなら、この程度のことは既に優秀な開発者の方々が解決してくれているからだ。
ただし、様々な方法があり、メリット・デメリットがあるため、解決方法を吟味して選ばなければならない。
探した結果、実現方法を3つ見つけた。以下はそれぞれのURLと感想。
おそらく実現方法1が最良。
実現方法1: VisualStateManager
http://timheuer.com/blog/archive/2008/10/22/silverlight-watermark-text-box-control.aspx
・問題なく使えた。おすすめ。他の実現方法は面倒だったりデメリットが多い
実現方法2: コードビハインドとImageBrush
http://code.msdn.microsoft.com/XAMLVBC-Watermark-b1436bc7/
・画像を用意するのが面倒
・使う度にコードビハインドを書かなければならない
実現方法3: ビヘイビア
http://weblogs.asp.net/jdanforth/archive/2010/09/17/silverlight-watermark-textbox-behavior.aspx
・Textプロパティにバインディングを使っていると初期表示がうまくいかない
・TextプロパティにWatermarkの内容が入るため、Textプロパティを参照するとWatermarkの内容を取得してしまう
・Expression BlendのSDKを入れなければならない