Skip to content

TextBox zh CN

末城via edited this page Jun 21, 2023 · 4 revisions

TextBox 输入框

返回目录

适用于:   v1.1.12 或更新的版本

概述

辅助类名:    TextBoxHelper
命名空间:    Panuon.WPF.UI
位于:    SharedResources/Panuon.WPF.UI/Helpers/TextBoxHelper.cs
全局资源字典:     pack://application:,,,/Panuon.WPF.UI;component/Styles/TextBox.xaml
独立资源字典:     pack://application:,,,/Panuon.WPF.UI;component/Styles/TextBoxStyle.xaml
独立资源样式键:    pu:StyleKeys.TextBoxStyle
静态类

提供一系列属性和方法, 用于自定义 TextBox 控件的样式。
此类型仅可以在 TextBox 控件上使用。

滚动至示例


备注

属性间的相互作用

IsEnabled 属性的值设为 False 时, Opacity 的属性值将与 GlobalSettings.Setting.DisabledOpacity 属性的值绑定(它的默认值为 0.4)。有关全局设置的更多内容, 请查看GlobalSettings 辅助类

自定义样式提示

WatermarkForeground 的默认值会设置成比 Foreground 属性更浅的颜色(如果后者为 System.Media.SolidColorBrush 类型)。
Padding 属性的默认值为 5,0,5,0IconHelper.Margin 属性的默认值为 10,0,0,0
若要更改通过 Icon 属性定义的图标的其他属性, 请查看IconHelper 辅助类
若要更改通过 ShadowColor 附加属性定义的阴影效果的详细属性, 请查看ShadowHelper 辅助类

注意

HoverForeground 附加属性仅支持纯色画刷(即 System.Media.SolidColorBrush )。如果设置为渐变画刷,将引发WPF内部错误。


附加属性

Icon

类型:    System.Object
默认值:    {Null}
获取或设置输入框的图标。若要更改图标的间距、字体等属性,请查看IconHelper 辅助类

Watermark

类型:    System.Object
默认值:    {Null}
获取或设置输入框的水印内容。

WatermarkForeground

类型:    System.Media.Brush
默认值:    ``(相较于Foreground属性较浅的颜色)`
获取或设置输入框水印文本的前景色彩画刷。

CornerRadius

类型:    System.Windows.CornerRadius
默认值:    0,0,0,0
获取或设置输入框的圆角大小。

ShadowColor

类型:    System.Media.Color ?
默认值:    {Null}
获取或设置输入框的阴影颜色。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。若要更改阴影的模糊半径、深度等属性,请查看 ShadowHelper 辅助类

HoverBackground

类型:    System.Media.Brush
默认值:    (相较于Background属性较深的颜色)
获取或设置输入框悬浮时的背景色彩画刷。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。

HoverForeground

类型:    System.Media.Brush
默认值:    {Null}
获取或设置输入框悬浮时的前景色彩画刷。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。
此属性仅支持支持纯色画刷(即SolidColorBrush)。如果设置为渐变画刷,将引发WPF内部错误。

HoverBorderBrush

类型:    System.Media.Brush
默认值:    {Null}
获取或设置输入框悬浮时的边框色彩画刷。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。

HoverShadowColor

类型:    System.Media.Color ?
默认值:    {Null}
获取或设置输入框悬浮时的阴影颜色。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。若要更改阴影的模糊半径、深度等属性,请查看 ShadowHelper 辅助类

FocusedBackground

类型:    System.Media.Brush
默认值:    (相较于Background属性更深的颜色)
获取或设置输入框获得键盘焦点时的背景色彩画刷。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。

FocusedForeground

类型:    System.Media.Brush
默认值:    {Null}
获取或设置输入框获得键盘焦点时的前景色彩画刷。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。

FocusedBorderBrush

类型:    System.Media.Brush
默认值:    {Null}
获取或设置输入框获得键盘焦点时的边框色彩画刷。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。

FocusedBorderThickness

类型:    System.Media.Thickness ?
默认值:    {Null}
获取或设置输入框获得键盘焦点时的边框粗细。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。

FocusedWatermarkForeground

类型:    System.Media.Brush
默认值:    {Null}
获取或设置输入框获得键盘焦点时水印文本的前景色彩画刷。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。

FocusedShadowColor

类型:    System.Media.Color ?
默认值:    {Null}
获取或设置输入框获得键盘焦点时的阴影颜色。此属性可以通过设置为 Null (在Xaml中为 {x:Null})来取消效果。若要更改阴影的模糊半径、深度等属性,请查ShadowHelper 辅助类

ClearButtonVisibility

类型:    Panuon.WPF.UI.AuxiliaryButtonVisibility
默认值:    [Collapsed] / Visible / VisibleOnNonnull / VisibleOnHover / VisibleOnHoverAndNonnull / VisibleOnFocused / VisibleOnFocusedAndNonnull_
获取或设置是否在输入框的尾部显示清空按钮。Collapsed 表示始终不显示,Visible 表示始终显示,VisibleOnNonnull 表示当输入框的文本不为空时显示,VisibleOnHover 表示当鼠标悬浮在输入框上时显示,VisibleOnHoverAndNonnull 表示当鼠标悬浮在输入框上且文本不为空时显示,VisibleOnFocused 表示当输入框获得键盘焦点时显示,VisibleOnFocusedAndNonnull 表示当输入框获得键盘焦点且文本不为空时显示。

ClearButtonStyle

类型:    System.Windows.Style
默认值:    {Null}
获取或设置用于清空输入框文本的 Button 按钮 控件的样式。有关此属性的使用方式,请查看示例2

InputLimit

类型:    Panuon.WPF.UI.InputLimits
默认值:    [None] / Digit / LowerCaseLetters / UpperCaseLetters / Point / MultiplePoints / At / MultipleAts / Space / MultipleSpaces_
获取或设置允许用户在文本框中输入哪些内容。此属性只能限制用户新输入或粘贴的内容,不能用于验证和剔除已有的内容。None 表示不限制输入内容,Digit 表示允许用户输入数字(0-9),LowerCaseLetters 表示允许用户输入小写字母(a-z),UpperCaseLetters 表示允许用户输入大写字母(A-Z),Point 表示允许 Text 中存在单个小数点(.),MultiplePoints 表示允许 Text 中存在多个小数点(.),At 表示允许 Text 中存在单个关于符号(@),MultipleAts 表示允许 Text 中存在多个关于符号(@),Space 表示允许 Text 中存在单个空格( ),MultipleSpaces 表示允许 Text 中存在多个空格( )。
当此属性的值不为 None 时,输入法将被禁用。此属性的枚举类型是一个标识(Flag),你可以同时使用多个标识来组合效果。例如:

pu:TextBoxHelper.InputLimits="Digit,Point"

TextBoxHelper.SetInputLimits(textBox, InputLimits.Digit | InputLimits.Point);

公开的资源键

有关如何使用资源键的更多内容, 请查看命名与约定-资源键
一些无法从外部访问的属性已被隐去。

ClearButtonStyle

资源键全称:    {ComponentResourceKey ResourceId=ClearButtonStyle, TypeInTargetAssembly={x:Type pu:TextBoxHelper}}
缩略资源键:    {pu:TextBoxHelper.ClearButtonStyle}

清空按钮的 Button 按钮 控件样式。

<Style x:Key="{ComponentResourceKey ResourceId=ClearButtonStyleKey, TypeInTargetAssembly={x:Type local:TextBoxHelper}}"
       TargetType="Button"
       BasedOn="{StaticResource {x:Static rs:StyleKeys.ButtonStyleKey}}">
    <Setter Property="Margin"
            Value="0,0,5,0" />
    <Setter Property="Background"
            Value="Transparent" />
    <Setter Property="local:ButtonHelper.HoverBackground"
            Value="{x:Null}" />
    <Setter Property="local:ButtonHelper.ClickBackground"
            Value="{x:Null}" />
    <Setter Property="FontFamily"
            Value="/Panuon.WPF.UI;component/Resources/Fonts/#PanuonIcon" />
    <Setter Property="FontSize"
            Value="{Binding FontSize, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}" />
    <Setter Property="Content"
            Value="&#xe92d;" />
    <Setter Property="Foreground"
            Value="{Binding Foreground, RelativeSource={RelativeSource AncestorType=TextBox}, Mode=OneWay}" />
</Style>

示例

示例1

xmlns:pu="https://opensource.panuon.com/wpf-ui"
···

<TextBox Height="40"
         Width="200"
         pu:IconHelper.FontFamily="{StaticResource PanuonIconFont}"
         pu:TextBoxHelper.Icon="&#xe939;"
         pu:TextBoxHelper.Watermark="Input your text"
         pu:TextBoxHelper.CornerRadius="4"
         pu:TextBoxHelper.FocusedForeground="#36AAF7"
         pu:TextBoxHelper.FocusedBorderBrush="#36AAF7"
         pu:TextBoxHelper.FocusedShadowColor="#36AAF7"
         pu:ShadowHelper.Opacity="0.5"
         pu:ShadowHelper.BlurRadius="15"
         pu:ShadowHelper.ShadowDepth="5">
</TextBox>

示例2

xmlns:pu="https://opensource.panuon.com/wpf-ui"
xmlns:purs="clr-namespace:Panuon.WPF.UI.Resources;assembly=Panuon.WPF.UI"
···

<TextBox Height="40"
         Width="200"
         Padding="10,0"
         Background="#1E1F24"
         Foreground="#FFFFFF"
         BorderBrush="LightGray"
         pu:IconHelper.FontFamily="{StaticResource PanuonIconFont}"
         pu:TextBoxHelper.Watermark="Input your text"
         pu:TextBoxHelper.CornerRadius="4"
         pu:TextBoxHelper.ClearButtonVisibility="VisibleOnFocused">
    <pu:TextBoxHelper.ClearButtonStyle>
        <Style TargetType="Button"
               BasedOn="{StaticResource {x:Static pu:TextBoxHelper.ClearButtonStyleKey}}">
            <Setter Property="Content"
                    Value="&#xe933;" />
            <Setter Property="FontSize"
                    Value="16" />
        </Style>
    </pu:TextBoxHelper.ClearButtonStyle>
</TextBox>