【发布时间】:2016-12-22 06:29:34
【问题描述】:
我已经实现了如下的自定义验证器...
public class RquiredFiledValidation:ValidationRule
{
public string ErrorMessage { get; set; }
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if (string.IsNullOrWhiteSpace(value.ToString()))
return new ValidationResult(false, ErrorMessage);
else
return new ValidationResult(true, null);
}
}
并附上如下文本框...
<TextBox x:Name="txtLoging" Grid.Column="1" HorizontalAlignment="Stretch" Validation.ErrorTemplate="{x:Null}" VerticalAlignment="Center" Margin="0,40,30,0">
<Binding Path="Text" ElementName="txtLoging" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True">
<Binding.ValidationRules>
<Validate:RquiredFiledValidation ErrorMessage="Please Provide Login Name"></Validate:RquiredFiledValidation>
</Binding.ValidationRules>
</Binding>
</TextBox>
我的问题是……
1) 当我直接点击登录按钮时,验证不会被触发
2) 当我在文本框中输入一个字符时,验证被触发但产生堆栈溢出错误。
【问题讨论】:
-
当我改变 UpdateSourceTrigger="LostFocus" 它停止工作。
-
你是如何显示错误的?你有任何样式或validation.ErrorTemplate 吗?提供堆栈溢出错误详细信息。
-
是的,我在资源中为错误模板定义了控制模板。我已经解决了第二个问题。但第一个问题仍然存在。我遇到了另一个问题,即错误消息与其他控件重叠。
-
第一个问题的任何帮助..当我直接点击登录按钮时,验证不会被触发
-
你在使用 MVVM 吗?
标签: c# wpf customvalidator