WPF 文本框添加水印效果

  有的时候我们需要为我们的WPF文本框TextBox控件添加一个显示水印的效果来增强用户体验,比如登陆的时候提示输入用户名,输入密码等情形。如下图所示:

WPF 文本框添加水印效果

  这个时候我们除了可以修改TextBox控件的控件模板之外,其实还有一种比较简单的方式来处理。就是为我们的TextBox控件添加一个触发器,当它的文本值为空并且当它没有焦点的时候,我们就修改TextBox控件的背景样式,我们将它的背景样式设置为VisualBrush,并且在VisualBrush中添加一个TextBlock控件来显示我们需要提示的水印信息。

  比如我们可以下面的代码来实现:

 1   <TextBox  Margin="50,10" TextWrapping="Wrap" Name="tb1" Visibility="Visible" Grid.Row="1"  Height="30">
 2             <TextBox.Style>
 3                 <Style TargetType="TextBox">
 4                     <Style.Triggers>
 5                         <MultiTrigger>
 6                             <MultiTrigger.Conditions>
 7                                 <Condition Property="IsFocused" Value="False"></Condition>
 8                                 <Condition Property="Text" Value=""></Condition>
 9                             </MultiTrigger.Conditions>
10                             <Setter Property="Background">
11                                 <Setter.Value>
12                                     <VisualBrush AlignmentX="Left" AlignmentY="Top" Stretch="None">
13                                         <VisualBrush.Visual>
14                                             <TextBlock Padding="5,2" Background="Transparent" Foreground="Silver"  FontSize="14">请输入用户名</TextBlock>
15                                         </VisualBrush.Visual>
16                                     </VisualBrush>
17                                 </Setter.Value>
18                             </Setter>
19                         </MultiTrigger>
20                     </Style.Triggers>
21                 </Style>
22             </TextBox.Style>
23         </TextBox>

PS:VisualBrush里面的内容我们可以*发挥,你甚至可以添加一个图片加一段文字来描述你的水印信息都可以。