我目前正在尝试阻止用户将数字以外的任何内容输入文本框。
我目前有一个带有textchange事件的文本框,它调用了一个relay命令。但是我无法通过relay命令影响文本框。
我已经尝试过直接设置textbox.text并且没有用,也没有尝试返回字符串。
这是我的代码
XAML
<TextBox x:Name="TextBox" Margin="5,5,0,0" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" Width="31" ">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<command:EventToCommand Command="{Binding TextBoxTextChanged,Mode=TwoWay}"
CommandParameter="{Binding Path=Text, ElementName=TextBox}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
查看模型
DaysBackTextChanged = new RelayCommand<string>(daysBackText =>
{
Func<string> function = () =>
{
if (!Regex.IsMatch(daysBackText, "[^0-9]+"))
{
//return TextBox.Text;
return "X";
}
else
{
return "Y";
}
};
});
答案 0 :(得分:0)
修改您的XAML,在PreviewTextInput
TextBox
个事件
PreviewTextInput="NumbersOnly"
现在,让我们使用正则表达式,是吗?
using System.Text.RegularExpressions;
private void NumbersOnly(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("[^0-9]+");
e.Handled = regex.IsMatch(e.Text);
}
这里e.Handeled
是为了防止输入数字而不是输入数字。
希望这有效:)