WPF设置TextBox内容为空时的提示文字的两种方式
1.网上普遍的实现形式为下面这一种,供参考。
1 <TextBox x:Name="TxtUserName1" Grid.Column="1" FontSize="18" TextChanged="TxtUserName1_TextChanged" 2 Foreground="#FFB4EEFF" Margin="1" BorderThickness="4" VerticalContentAlignment="Center"> 3 <TextBox.Resources> 4 <VisualBrush x:Key="HintText" TileMode="None" Opacity="0.5" Stretch="None" AlignmentX="Left"> 5 <VisualBrush.Visual> 6 <TextBlock Text="请输入用户名" Foreground="Gray"/> 7 </VisualBrush.Visual> 8 </VisualBrush> 9 </TextBox.Resources> 10 <TextBox.Style> 11 <Style TargetType="TextBox"> 12 <Style.Triggers> 13 <Trigger Property="Text" Value="{x:Null}"> 14 <Setter Property="Background" Value="{StaticResource HintText}"/> 15 </Trigger> 16 <Trigger Property="Text" Value=""> 17 <Setter Property="Background" Value="{StaticResource HintText}"/> 18 </Trigger> 19 </Style.Triggers> 20 </Style> 21 </TextBox.Style> 22 </TextBox>
在应用过程中,如果我给TextBox加一个 Background,提示文字就会不正常显示。
2.于是我用了第二个办法实现,在TextBox的位置新增一个TextBlock,TextBlock的内容为提示信息。
在TextBox的TextChanged事件中实现隐藏
Xaml代码:
1 <Grid Grid.Row="3"> 2 <TextBox x:Name="TxtUserName2" Grid.Column="1" FontSize="18" TextChanged="TxtUserName2_TextChanged" Background="AliceBlue" 3 Foreground="#FFB4EEFF" Margin="1" BorderThickness="4" VerticalContentAlignment="Center"> 4 </TextBox> 5 <TextBlock Name="txtTip" Text="请输入用户名" Padding="10"></TextBlock> 6 </Grid>
cs后台代码:
1 private void TxtUserName2_TextChanged(object sender, TextChangedEventArgs e) 2 { 3 txtTip.Visibility = string.IsNullOrEmpty(TxtUserName2.Text) ? Visibility.Visible : Visibility.Hidden; 4 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)