WPF textbox头尾添加文本

一个输入数据个数的文本框


    public class NumberToStringConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null || string.IsNullOrEmpty(value.ToString()))
            {
                return "1";
            }

            int num = System.Convert.ToInt32(value);
            if (num > 200)
            {
                num = 200;
            }

            return num;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null || string.IsNullOrEmpty(value.ToString()))
            {
                return null;
            }

            int num = System.Convert.ToInt32(value);
            if (num > 200)
            {
                num = 200;
            }

            return num;
        }
    }
    
    <Style x:Key="Watermarked" TargetType="{x:Type TextBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBox}">
                    <Grid>
                        <!-- 边框和背景 -->
                        <Border x:Name="border"
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                SnapsToDevicePixels="True"/>

                        <!-- 内容容器 -->
                        <Grid Margin="{TemplateBinding Padding}">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>

                            <ScrollViewer x:Name="PART_ContentHost" Margin="10,0" />
                            <!-- 头文本 -->
                            <TextBlock x:Name="watermark" Grid.Column="0"
                                       Text="{TemplateBinding Tag}"
                                       Foreground="Gray"
                                       VerticalAlignment="Center"
                                       Margin="2,0,0,0"/>

                            <!-- 尾文本 -->
                            <TextBlock x:Name="watermarkRight" Grid.Column="1"
                                       VerticalAlignment="Center"
                                       Text="个"
                                       Foreground="Gray"
                                       Margin="2,0,0,0"/>
                        </Grid>
                    </Grid>

                    <ControlTemplate.Triggers>
                        <!-- 其他触发器 -->
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter TargetName="border" Property="Opacity" Value="0.5"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>


<TextBox x:Name="tbSNNum" Grid.Row="1" Grid.Column="0"
         Width="200" Margin="2" MinHeight="35"
         VerticalAlignment="Center"
         HorizontalContentAlignment="Center"
         VerticalContentAlignment="Center"
         input:InputMethod.IsInputMethodEnabled="False"
         MaxLength="6" PreviewTextInput="tbSNNum_PreviewTextInput"
         Style="{StaticResource Watermarked}"
         Tag="获取">

    <TextBox.Text>
        <Binding Converter="{StaticResource cvtNumToStr}"
                 Mode="TwoWay" Path="RequestSNNum"
                 UpdateSourceTrigger="PropertyChanged"
                 ValidatesOnDataErrors="True">
            <Binding.ValidationRules>
                <rule:NumRuler />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

你可能感兴趣的:(WPF textbox头尾添加文本)