【发布时间】:2021-09-01 13:55:20
【问题描述】:
我有一个 NotEmptyValidationRule 类,如下所示。如果我正常Text="{Binding SelectedSpeed}",我可以毫无问题地输入浮点数。
如果您按如下方式检查 NotEmptyValidationRule,"." 和 "," 将阻止输入。我不明白为什么会出现问题。
谢谢你的回答。
NotEmptyValidationRule.cs
public class NotEmptyValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
return string.IsNullOrWhiteSpace((value ?? "").ToString())
? new ValidationResult(false, "Field is required.")
: ValidationResult.ValidResult;
}
}
Xaml 代码
<TextBox Width="150"
Margin="10,0,0,0"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto">
<TextBox.Text>
<Binding Path="SelectedSpeed"
UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:NotEmptyValidationRule ValidatesOnTargetUpdated="True"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
我的视图模型
private float? _selectedSpeed;
public float? SelectedSpeed
{
get => _selectedSpeed;
set => SetProperty(ref _selectedSpeed, value);
}
【问题讨论】:
-
请注意:
string.IsNullOrWhiteSpace(value?.ToString())比您当前的string.IsNullOrWhiteSpace((value ?? "").ToString())更好阅读。