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

1.简介
  TextBox是一个编辑控件,支持多行和单行显示,根据其模版可支持滚动等功能和样式。
2.属性
2.1IsReadOnly
  类型:Boolean;
  功能:是否可读;
  说明:可通过此属性来触发TextBox的外观样式变化。

2.2AcceptsReturn
  类型:Boolean;
  功能:是否接收回车键;
  说明:如果设置为False,则编辑框不接收回车键。
2.3AcceptsTab
  类型:Boolean;
  功能:是否接收Tab键;
  说明:如果设置为False,则编辑框不接收Tab键。
2.4Text
  类型:String;
  功能:编辑的文本内容;
  说明:TextBox内容变化时,此属性值会对应改变。

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

4.标准的资源样式
  下面是一个标准的TextBox样式定义:
    <?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="TextBox">
        <Setter Property="Padding" Value="2" />
        <Setter Property="MaxLines" Value="1" />
        <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="TextBox">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            CornerRadius="5">
                        <ScrollViewer Name="PART_ContentHost" VerticalAlignment="Stretch" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="MaxLines" Value="1">
                            <Setter Property="VerticalAlignment" TargetName="PART_ContentHost" Value="Center" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </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>