https://www.cnblogs.com/BeiJing-Net-DaiDai/p/4191793.html
- 对于TextBox方便一些
- 把Style设置好,然后用TextBox控件就可以了
- PasswordBox
- 在项目中创建一个Monitor类(最好放到Tools包里)
- 在xaml文件中引入命名空间(就是local空间)
- 设置Style,这里需要对项目进行编译,否则无法找到Monitor类
- 代码
放到<ResourceDictionary>里
<VisualBrush x:Key="HelpBrush" TileMode="None" Opacity="0.2" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock FontStyle="Normal" Text="请输入用户名"/>
</VisualBrush.Visual>
</VisualBrush>
<Style TargetType="TextBox">
<Setter Property="HorizontalAlignment" Value="Left"></Setter>
<Style.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource HelpBrush}"/>
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{StaticResource HelpBrush}"/>
</Trigger>
</Style.Triggers>
</Style>
<!--以上是设置的关于TextBox水印的部分Resource资源-->
<Style TargetType="PasswordBox">
<Setter Property="HorizontalAlignment" Value="Left"></Setter>
<Setter Property="VerticalAlignment" Value="Top"></Setter>
<Setter Property="local:PasswordBoxMonitor.IsMonitoring" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type PasswordBox}">
<Border Name="Bd" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}" SnapsToDevicePixels="true">
<Grid>
<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<StackPanel Orientation="Horizontal" Visibility="Collapsed" Name="myStackPanel">
<TextBlock Margin="3 0 0 0" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="LightGray" Text="请输入密码"/>
</StackPanel>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Visibility" TargetName="myStackPanel" Value="Collapsed"/>
</Trigger>
<Trigger Property="local:PasswordBoxMonitor.PasswordLength" Value="0">
<Setter Property="Visibility" TargetName="myStackPanel" Value="Visible"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--以上是设置PasswordBox的水印内容-->
- 这个方法用户名和密码两个文本框的水印文字有一些细微差别,请注意