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
- SpringBoot實現熱部署兩種方式!Spring Boot熱部署
- 兩種方式實現輪播圖
- Spring實現IOC容器的兩種實現方式Spring
- SCSS % 佔位符CSS
- 適當的方式模仿UITextField佔位符的顏色UI
- 引數佔位符
- tensorflow-佔位符
- 前端--實現隔行變色的兩種方式前端
- ViewPager兩種方式實現無限輪播Viewpager
- 兩種方式實現橫向滾動條
- golang fmt 格式 “佔位符”Golang
- Java中實現並行請求兩種方式Java並行
- MyBatis中主鍵回填的兩種實現方式MyBatis
- SSH整合實現分頁查詢(兩種方式)
- Spring宣告式事務的兩種實現方式Spring
- zuul實現Cors跨域的兩種方式(https)ZuulCORS跨域HTTP
- WPF/C#:顯示分組資料的兩種方式C#
- html 空白漢字佔位符HTML
- SpringBoot配置檔案佔位符Spring Boot
- maven如何過濾佔位符Maven
- 關於多執行緒的兩種實現方式執行緒
- Python基礎學習篇-3- 如何使用 各種佔位符 和 %方式 Format方式 進行格式化輸出?PythonORM
- Spring Boot 中實現定時任務的兩種方式Spring Boot
- golang 佔位符還傻傻分不清?Golang
- WPF兩種緩動動畫動畫
- html隨意拖動內容位置的兩種實現方式HTML
- 基於 Electron 做視訊會議的兩種實現方式
- WPF中以MVVM方式,實現RTSP影片播放MVVM
- python切片如何作為佔位符使用Python
- SpringBoot專案配置檔案佔位符Spring Boot
- 問題:mybatis like 佔位符處理MyBatis
- 強大的CSS:placeholder-shown偽類實現Material Design佔位符互動效果CSSMaterial Design
- AUTOCAD——兩種延伸方式
- 力扣演算法經典第一題——兩數之和(Java兩種方式實現)力扣演算法Java
- 106-Python中常用佔位符型別Python型別
- 詳解 Go 語言中 20 個佔位符!Go
- C++ 預設引數和佔位符C++
- 字元編碼及空白漢字佔位符字元