我有一个TextBox.Text
绑定到视图模型属性的属性。
我想确保Text
只有数字,并且值将被限制为 1 < X < 200。我不想在后面的代码中显示任何代码,我想对其进行单元测试。
下面的代码适用于限制规则,但对于 IsDigit 规则,它只适用于第一次然后停止......为什么?
XAML:
<TextBox Width="150" Height="30" Text="{Binding Degree,
UpdateSourceTrigger=PropertyChanged}"/>
后面的代码:
private string degree;
public string Degree
{
get { return degree; }
set
{
if (degree == value || value == string.Empty)
{
return;
}
degree = value;
if (IsDigit(degree))
{
int intValue;
intValue = int.Parse(degree);
if (intValue < 1 || intValue > 200)
{
degree = string.Empty;
}
}
else
{
degree = string.Empty;
}
OnPropertyChanged("Degree");
}
}
private static bool IsDigit(string text)
{
var regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
return !regex.IsMatch(text);
}