【发布时间】:2018-10-12 12:57:37
【问题描述】:
我有文本框,名称是 checkDescriptionTxtBox 和 parameterTxtBox。两者都使用相同的验证规则,例如在 TextBoxValidator.cs 中可用。但一个区别是在 parameterTxtBox 中添加了 ValidationStep="UpdatedValue"。 checkDescriptionTxtBox 验证按预期工作,但为什么 parameterTxtBox 验证不工作?你能帮助任何人吗?
我想在源属性更新后验证值。我已经调试了 Validate 方法。在 checkDescriptionTxtBox 验证参数值作为字符串传递但当 parameterTxtBox 验证参数值不作为字符串传递而不是差异绑定值时。所以我想在源属性更新后验证值。如何做到这一点?
<TextBox Name="checkDescriptionTxtBox" Width="700" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Auto" Validation.ErrorTemplate="{StaticResource validationErrorTemplate}">
<TextBox.Text>
<Binding Path="CheckDescription" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<v:TextBoxValidator></v:TextBoxValidator>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<TextBox Name="parameterTxtBox" Margin="10,0,0,0" Width="200" Height="20" Validation.ErrorTemplate="{StaticResource validationErrorTemplate}">
<TextBox.Text>
<Binding Path="ParameterValue" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" >
<Binding.ValidationRules>
<v:TextBoxValidator ValidationStep="UpdatedValue"></v:TextBoxValidator>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
TextBoxValidator.cs
public class TextBoxValidator : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
if (String.IsNullOrEmpty(value.ToString().Trim()))
return new ValidationResult(false, "Value cannot be empty");
return ValidationResult.ValidResult;
}
}
【问题讨论】:
-
我想在源属性更新后验证值。我已经调试了 Validate 方法。在 checkDescriptionTxtBox 验证参数值作为字符串传递但当 parameterTxtBox 验证参数值不作为字符串传递而不是差异绑定值时。所以我想在源属性更新后验证值。如何做到这一点?