这是一个有点 WPF whodunnit !我的验证认为它没有按预期出现
问题
基本上,我在我的视图模型上使用 IDataErrorInfo 来提供有关数据输入错误的反馈。我可以看到它被调用并按预期工作,但是 WPF 永远不会显示绑定控件的验证错误模板!
我已经尝试过使用内置的默认文本框红色边框错误模板、样式错误模板和硬编码模板。在数据错误情况下,这些都不会显示。
这是我的 xaml 绑定代码:
<TextBox x:Name="txtCaseNumber"
Text="{Binding Path=CaseNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>
奇怪的是,错误进入了 Validation.Errors 集合。以下代码导致我的 IDataErrorInfo 错误消息显示在绑定控件旁边。这让我认为问题出在 xaml 方面,而不是 viewmodel 方面。
<ContentPresenter
Content="{Binding ElementName=txtCaseNumber, Path=(Validation.Errors).CurrentItem}" />
此外,
System.Windows.Controls.Validation.GetHasError(txtCaseNumber)
返回 true。
如果这有所作为,我将在 winforms 中托管 WPF。我在我的代码或样式中找不到对 Validation 或 ErrorTemplate 的任何引用,所以我很确定这不是样式化自己的目标。