wpf兩種佔位符實現方式
方式一:通過設定樣式style
在app.xaml 中加入以下樣式配置:
<Style x:Key="placeHolder" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<TextBox Padding="10,0,0,0" VerticalContentAlignment="Center" Text="{Binding Path=Text,
RelativeSource={RelativeSource TemplatedParent},
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
x:Name="textSource"
Background="Transparent"
Panel.ZIndex="2" />
<TextBox Padding="10,0,0,0" VerticalContentAlignment="Center" Text="{TemplateBinding Tag}" Background="{TemplateBinding Background}" Panel.ZIndex="1">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="Transparent"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Text, Source={x:Reference textSource}}" Value="">
<Setter Property="Foreground" Value="LightGray"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
這個樣式中grid內有兩個textbox,第一個textbox 的Zindex=“2”,接受textbox控制元件的內容,第二個textbox的Zindex=“1”,接受來時tag的佔位字元。在頁面中這樣引用:
<TextBox x:Name="txtPlaceHolder1" Padding="10,10,0,0" Text="" Width="468" FontSize="32" Height="72" Style="{StaticResource placeHolder}" Tag="佔位符1,通過style實現"> </TextBox>
會有這樣的效果:
方式二:不設定樣式,c#程式碼實現
程式碼略長,下面會放原始碼
使用方法: 引入controls名稱空間,
<TextBox x:Name="txtPlaceHolder2" VerticalContentAlignment="Center" Padding="10,0,0,0" controls:PlaceholderManager.Placeholder="佔位符2,通過C#程式碼實現" Width="468" FontSize="32" Height="72" Margin="0,10,0,0"></TextBox>
效果如圖:程式碼 下載
相關文章
- 聊聊 SpringBoot 中的兩種佔位符:@*@ 和 ${*}Spring Boot
- 兩種方式實現輪播圖
- SCSS % 佔位符CSS
- 兩種方式實現web html sliderWebHTMLIDE
- 兩種遞迴方式實現迴文字遞迴
- Spring實現IOC容器的兩種實現方式Spring
- 適當的方式模仿UITextField佔位符的顏色UI
- 前端--實現隔行變色的兩種方式前端
- ViewPager兩種方式實現無限輪播Viewpager
- SpringBoot實現熱部署兩種方式!Spring Boot熱部署
- 兩種方式實現橫向滾動條
- golang fmt 格式 “佔位符”Golang
- MyBatis中主鍵回填的兩種實現方式MyBatis
- SSH整合實現分頁查詢(兩種方式)
- Java中實現並行請求兩種方式Java並行
- Spring定時器的兩種實現方式Spring定時器
- zuul實現Cors跨域的兩種方式(https)ZuulCORS跨域HTTP
- Spring宣告式事務的兩種實現方式Spring
- 關於多執行緒的兩種實現方式執行緒
- html 空白漢字佔位符HTML
- Android 頁面跳轉動畫的兩種實現方式Android動畫
- 【Python】python 多執行緒兩種實現方式Python執行緒
- url跳轉的兩種實現方式 域名 80埠占用
- 請教兩種Singleton Pattern 實現方式的區別!
- Python基礎學習篇-3- 如何使用 各種佔位符 和 %方式 Format方式 進行格式化輸出?PythonORM
- WPF中以MVVM方式,實現RTSP影片播放MVVM
- golang 佔位符還傻傻分不清?Golang
- 【20】vue.js — slot佔位符Vue.js
- 使用PreparedStatement為佔位符?賦值賦值
- html隨意拖動內容位置的兩種實現方式HTML
- Spring Boot 中實現定時任務的兩種方式Spring Boot
- 基於 Electron 做視訊會議的兩種實現方式
- GCD底層實現理解以及建立單例的兩種方式GC單例
- C++STL::兩種方式實現STL容器的reference語義C++
- SpringBoot配置檔案佔位符Spring Boot
- 問題:mybatis like 佔位符處理MyBatis
- 用兩種方式實現基於源地址的策略路由(轉)路由
- 力扣演算法經典第一題——兩數之和(Java兩種方式實現)力扣演算法Java