第一步:在TextBox中添加属性 InputMethod.IsInputMethodEnabled="False"
<TextBox x:Name="Barcode" Width="90" Height="26" Margin="2" BorderThickness="2" InputMethod.IsInputMethodEnabled="False" PreviewTextInput="Barcode_PreviewTextInput">
第二步:设置正则表达式,添加PreviewTextInput事件
private void Barcode_PreviewTextInput(objectsender,System.Windows.Input.TextCompositionEventArgs e)
{
Regex re = new Regex("[^0-9]+");
e.Handled = re.IsMatch(e.Text);
}
这样就OK啦。
当然也可以增加一些校验,比如空值验证:
<TextBox x:Name="Barcode" Width="90" Height="26" Margin="2" BorderThickness="2" InputMethod.IsInputMethodEnabled="False" PreviewTextInput="Barcode_PreviewTextInput">
<TextBox.Resources>
<VisualBrush x:Key="HintText" TileMode="None" Opacity="0.5" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock FontStyle="Normal" Text="请添加Barcode"/>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Resources>
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource HintText}"/>
<Setter Property="BorderBrush" Value="Red"></Setter>
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{StaticResource HintText}"/>
<Setter Property="BorderBrush" Value="Red"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
效果如下: