這個效果我不太會描述 PlaceHolder直譯占位符 也有人把這個效果叫水印效果 就是和HTML5的PlaceHolder屬性一樣的效果 上圖直觀: 使用方法: 首先下載 占位符行為dll.rar 在項目中引用dll 1.在VS中 引用System.Windows.Interactivity.dl ...
這個效果我不太會描述 PlaceHolder直譯占位符 也有人把這個效果叫水印效果 就是和HTML5的PlaceHolder屬性一樣的效果 上圖直觀:
使用方法:
首先下載 占位符行為dll.rar 在項目中引用dll
1.在VS中
引用System.Windows.Interactivity.dll程式集
在xmal頁面添加引用:
然後附加到TextBox
設置行為的屬性
Text值肯定是要設置的了,這個是提示的文字.然後按需設置其他屬性.不設置的話,預設取被附加的TextBox的值.
2.在Blend中
在blend中就非常簡單了,直接拖到TextBox上就行了
設置屬性
====================================分割線============================================
這個效果非常常見,又與業務無關,非常適合做成行為Behavior,以方便在不同的項目中使用,而不用去更改控制項模版.
介紹下實現的思路:
TextBox中有一個組成部件:PART_ContentHost 用於顯示文本
於是我想到的最簡單的實現方法就是,在這個部件上面加一個TextBlock用於顯示提示信息,在TextBox的Text的Length>0的時候隱藏該TextBlock,Length=0的時候顯示該TextBlock
這樣的話,就需要把這個部件拿出來,套上一個Grid,再在Grid裡面加上TextBlock,然後把整個Grid放回原來的位置.
既然部件的父級能放下這個FrameworkElement類型的部件,那麼它必然繼承自Decorator或Panel中的一個.Decorator有Child屬性,Panel有Children屬性.(用戶有可能改控制項模版,換成Grid之類的,不改的話,就是繼承自Decorator)
這樣的話,找到這個部件和它的父級,就能實現這個效果了.
Panel我值考慮了4種情況:StackPanel,DockPanel,Grid,Canvas
依賴屬性6個:Text,FontSize,Foreground,HorizontalAlignment,VerticalAlignment,Margin
個人能力有限,難免有不完善的地方,歡迎廣大博友補充指正
最後附上完整Demo源碼: 占位符行為源碼.rar
非常感謝您能讀完此文 原創內容 寫文章不易 如果感覺本文對你有幫助 請點擊“推薦” 歡迎轉載 請註明本文鏈接
推薦一個不錯的Blend,Wpf,sl交流群
群號碼:152049269
歡迎大神,萌新踴躍加入,交流探討,共同進步!