通知公告
标准控件PasswordBox的资源样式
日期:2015-12-15  发布人:admin  浏览量:259

1.简介
  PasswordBox是一个密码控件,支持自定义密码显示字符,比如*等。
2.属性
2.1IsReadOnly
  类型:Boolean;
  功能:是否可读;
  说明:可通过此属性来触发TextBox的外观样式变化。
2.2AcceptsReturn
  类型:Boolean;
  功能:是否接收回车键;
  说明:如果设置为False,则编辑框不接收回车键。
2.3AcceptsTab
  类型:Boolean;
  功能:是否接收Tab键;
  说明:如果设置为False,则编辑框不接收Tab键。
2.4Text
  类型:String;
  功能:密码内容;
  说明:PasswordBox内容变化时,此属性值会对应改变。
2.5PasswordChar
  类型:String;
  功能:密码显示字符;
  说明:设置显示密码时的掩码字符。

3.事件
3.1TextChangedEvent
  功能:TextBox文本内容变化时触发此事件;
  说明:此事件是一个冒泡事件,会从当前控件向上依次触发,直到事件被处理或到达跟元素为止。
3.2PasswordChangedEvent
  功能:密码内容变化时触发此事件;
  说明:此事件是一个冒泡事件,会从当前控件向上依次触发,直到事件被处理或到达跟元素为止。

4.标准的资源样式
  下面是一个标准的PasswordBox样式定义:
    <?xml encoding="utf-8" ?>
<ResourceDictionary>

    <SolidColorBrush x:Key="textbox_br_normal" Color="#353535" />
    <SolidColorBrush x:Key="textbox_br_focused" Color="#555555" />
    <SolidColorBrush x:Key="textbox_bk_normal" Color="#333333" />
    <SolidColorBrush x:Key="textbox_fg_normal" Color="White" />
    
    <Style TargetType="PasswordBox">
        <Setter Property="SelectionBrush" Value="Green" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="BorderBrush" Value="{StaticResource textbox_br_normal}" />
        <Setter Property="Background" Value="{StaticResource textbox_bk_normal}" />
        <Setter Property="Foreground" Value="{StaticResource textbox_fg_normal}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="PasswordBox">
                    <Border CornerRadius="5" Background="{TemplateBinding Background}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            BorderBrush="{TemplateBinding BorderBrush}" >
                        <Grid Name="PART_ContentHost" Margin="2" VerticalAlignment="Center"  />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

        <Style.Triggers>
            <Trigger Property="IsFocused" Value="True">
                <Setter Property="BorderBrush" Value="{StaticResource textbox_br_focused}" />
            </Trigger>
            <Trigger Property="IsFocused" Value="False">
                <Setter Property="SelectionTextBrush" Value="Gray" />
                <Setter Property="SelectionBrush" Value="SkyBlue" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ResourceDictionary>

说明:
    模版中的PART_ContentHost表示密码内容的宿主,此控件的Name不能为其它,必须为PART_ContentHost,我们可以更改模版换成其它的布局,但是必须有PART_ContentHost。