[c#] 给TextBox和PasswordBox添加水印提示文字

https://www.cnblogs.com/BeiJing-Net-DaiDai/p/4191793.html

  1. 对于TextBox方便一些
  • 把Style设置好,然后用TextBox控件就可以了
  1. PasswordBox
  • 在项目中创建一个Monitor类(最好放到Tools包里)
  • 在xaml文件中引入命名空间(就是local空间)
  • 设置Style,这里需要对项目进行编译,否则无法找到Monitor类
  1. 代码
		放到<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的水印内容-->
  1. 这个方法用户名和密码两个文本框的水印文字有一些细微差别,请注意
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值