Wpf 验证。错误未调用处理程序
我在验证方面遇到了一些问题。我创建了一个名为RequiredFieldRule的自定义验证器,该验证器在xaml中应用如下:Wpf 验证。错误未调用处理程序,wpf,validation,Wpf,Validation,我在验证方面遇到了一些问题。我创建了一个名为RequiredFieldRule的自定义验证器,该验证器在xaml中应用如下: <TextBox local:Masking.Mask="^[a-zA-Z0-9]*$" x:Name="CameraIdCodeTextBox" Grid.Row="1" Grid.Column="1"> <Binding Path="CameraIdCode" Mode="TwoWay"> <Binding.ValidationRul
<TextBox local:Masking.Mask="^[a-zA-Z0-9]*$" x:Name="CameraIdCodeTextBox" Grid.Row="1" Grid.Column="1">
<Binding Path="CameraIdCode" Mode="TwoWay">
<Binding.ValidationRules>
<localValidation:RequiredFieldRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
我想显示一些自定义的视觉反馈,并尝试使用Validation.Error事件在错误冒泡时捕获错误:
private void Grid_Error(object sender, ValidationErrorEventArgs e)
{
// do stuff here
}
不幸的是,该处理程序从未被调用。我的问题是,当处理程序中的文本框正确返回失败的ValidationResult时,为什么不调用该处理程序?您没有在XAML中设置所需的所有内容。尝试添加以下XAML属性:
- UpdateSourceTrigger=“PropertyChanged”
- NotifyOnValidationError=“True”
- ValidatesOnExceptions=“True”
<TextBox local:Masking.Mask="^[a-zA-Z0-9]*$" x:Name="CameraIdCodeTextBox" Grid.Row="1" Grid.Column="1">
<Binding Path="CameraIdCode" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True" ValidatesOnExceptions="True">
<Binding.ValidationRules>
<localValidation:RequiredFieldRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
我有下面的例子,所以我加载了它并测试了你正在做的事情,我得到了同样的问题。
为了证明我的建议有效,我将我提到的属性添加到我的示例中,并将冒泡事件Validation.Error=“MainGrid\u Error”添加到我的网格中,它就会触发
在我的示例中,添加这些属性会引发冒泡事件。他说得对,听他的。只有在
NotifyOnValidationError=“True”
时才会触发错误事件,只有在设置validateOnceptions=“True”
@Rhyous Aweesome时才会发生验证。我一上班就去试试。如果你没有从我这里得到进一步的评论,这是有效的,我非常感激!
<TextBox local:Masking.Mask="^[a-zA-Z0-9]*$" x:Name="CameraIdCodeTextBox" Grid.Row="1" Grid.Column="1">
<Binding Path="CameraIdCode" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True" ValidatesOnExceptions="True">
<Binding.ValidationRules>
<localValidation:RequiredFieldRule />
</Binding.ValidationRules>
</Binding>
</TextBox>