关于WPF PasswordBox 增加提示文案,请输入密码,亲测最快方案,改最少的代码!!!

思路:不需要像其他方案改任何PasswordBox的样式,直接在同样的位置加个texbox控件显示隐藏即可

1.xaml,注意关键代码,样式之类可以不管

  <!-- 密码 -->
            <Border Grid.Row="7" Style="{StaticResource InputBorderStyle}">
                <Canvas>
                    <Image Canvas.Top="9"
                           Canvas.Left="19"
                           Width="12"
                           Height="15"
                           Source="../images/icon_login_password.png" />
                    <PasswordBox Canvas.Top="0"
                                 Canvas.Left="45"
                                
                                 Style="{StaticResource InputPasswordStyle}"
                                 x:Name="tboxPassword"
                                 GotFocus="tboxPassword_GotFocus"
                                 LostFocus="tboxPassword_LostFocus" />
                    <!-- 请输入密码提示 -->
                    <TextBox Canvas.Top="0"
                             Canvas.Left="45"
                             Visibility="Hidden"
                             x:Name="tboxPasswordPlaceHolder"
                             Text="请输入密码"                             
                             Style="{StaticResource InputAccountStyle}"
                             GotFocus="tboxPasswordPlaceHolder_GotFocus"
                             />
                </Canvas>
            </Border>

2.xaml.cs

 private void tboxPassword_GotFocus(object sender, RoutedEventArgs e)
        {
            var password = sender as PasswordBox;
            if (password != null)
            {
                var border = VisualTreeHelpers.FindAncestor<Border>(this.tboxPassword);
                if (border != null)
                {
                    border.BorderBrush = BrushGotFocus;
                }
            }
        }
       
        private void tboxPassword_LostFocus(object sender, RoutedEventArgs e)
        {
            var password = sender as PasswordBox;
            if (password != null)
            {
                var border = VisualTreeHelpers.FindAncestor<Border>(this.tboxPassword);
                if (border != null)
                {
                    border.BorderBrush = BrushLostFocus;
                }
                if (string.IsNullOrWhiteSpace(password.Password))
                {
                    password.Visibility = Visibility.Hidden ;
                    tboxPasswordPlaceHolder.Visibility = Visibility.Visible;
                }
            }
        }
        private void tboxPasswordPlaceHolder_GotFocus(object sender, RoutedEventArgs e)
        {
            tboxPassword.Visibility = Visibility.Visible;
            tboxPasswordPlaceHolder.Visibility = Visibility.Hidden;
            tboxPassword.Focus();
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值