zoukankan      html  css  js  c++  java
  • WPF 为 PasswordBox 控件添加水印,最低级版

    原因也很直接,老板需要,一开始为TextBox发愁,就找了这个控件凑合用,至于版权什么的,内部工具也不卖钱,而且我不懂英文,也就无视了:

     
    人家是专业的,所以技术方面我就不研究了,但是,密码框却不能加水印,这倒是挺无聊的。
    实在懒得搞控件,就自己写了个样式凑合着用:
    提示水印是写死的,毕竟是原生控件,不会搞的就凑合用,看不过去就自己写一个控件吧。
     1     <Style x:Key="PasswordBoxStyle1" TargetType="{x:Type PasswordBox}">
     2         <Setter Property="BorderThickness" Value="1"/>
     3         <Setter Property="Padding" Value="2"/>
     4         <Setter Property="Template">
     5             <Setter.Value>
     6                 <ControlTemplate TargetType="{x:Type PasswordBox}">
     7                    <Border x:Name="Bd" SnapsToDevicePixels="true" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}">
     8                         <Grid Margin="{TemplateBinding Padding}">
     9                             <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
    10                             <TextBlock x:Name="water" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="LightGray" FontSize="{TemplateBinding FontSize}"
    11                                        Text="请输入密码" Visibility="Hidden"/>
    12                         </Grid>
    13                     </Border>
    14                     
    15                     <ControlTemplate.Triggers>
    16                         <Trigger Property="IsEnabled" Value="false">
    17                             <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
    18                             <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
    19                         </Trigger>
    20                         <MultiTrigger>
    21                             <MultiTrigger.Conditions>
    22                                 <Condition Property="IsFocused" Value="false"/>
    23                                 <Condition Property="ExtentWidth" Value="0" SourceName="PART_ContentHost"/>
    24                             </MultiTrigger.Conditions>
    25                             <Setter Property="Visibility" Value="Visible" TargetName="water"/>
    26                         </MultiTrigger>
    27                     </ControlTemplate.Triggers>
    28                 </ControlTemplate>
    29             </Setter.Value>
    30         </Setter>        
    31     </Style>
    PasswordBoxStyle1
  • 相关阅读:
    小白自动化测试指南
    分布式性能测试框架用例方案设想(二)
    高QPS下的固定QPS模型
    测试自动化最佳实践【译】
    moco框架接口命中率统计实践
    基于docker的分布式性能测试框架功能验证(一)
    编写高质量代码:Web前端开发修炼之道(一)
    JavaScript中点操作符和中括号操作符区别
    Vue脚手架生成及配置
    Npm设置淘宝镜像
  • 原文地址:https://www.cnblogs.com/3Tai/p/3956505.html
Copyright © 2011-2022 走看看