在silverlight2裡面,提供了textbox的水印watermark功能。但是之後的版本就把這個功能給删了。關于silverlight2裡面的水印功能可以參考這篇文章《一步一步學silverlight 2系列(2):基本控件》。之後想用水印唯有自己寫一個了。
以下是我自己寫的一個帶水印的textbox。
除了增加一個屬性之外,還需要增加一些儲存差別于正常狀态的屬性的全局變量。
在textbox裡面我們可以發現這兩個事件是override标記的,是以可以重載他們。
類似于初始化,先驗檢測水印是否存在,而且設定水印。這個我将代碼寫在sizechanged事件裡面。為什麼要寫在這裡可以參考另外一篇文章,關于控件的生命周期的《silverlight 的控件生命周期 - 木野狐(neil chen)》。另外要将_usercolor和_useropacity初始化。
sizechanged事件的代碼如下:
帶水印的textbox
local是命名空間,是mytextbox類所在的命名空間。本機是這樣寫的:xmlns:local="clr-namespace:textboxwatermark"
未擷取焦點:
擷取焦點并輸入
好記性不如爛筆頭