Noe*_*edy 20 wpf xaml adornerlayer
这有点像WPF whodunnit!我的验证寺庙在预期时没有出现
问题
基本上,我在我的视图模型上使用IDataErrorInfo来提供有关数据输入错误的反馈.我可以看到这被调用并按预期工作,但WPF从不显示绑定控件的验证错误模板!
我已尝试使用内置的默认文本框红色边框错误模板,样式错误模板和硬编码模板.这些都不会在数据错误情况下显示.
继承我的xaml绑定代码:
<TextBox x:Name="txtCaseNumber"
Text="{Binding Path=CaseNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>
Run Code Online (Sandbox Code Playgroud)
很奇怪,错误进入Validation.Errors集合.以下代码导致我的IDataErrorInfo错误消息显示在绑定控件旁边.这让我认为问题出在xaml方面,而不是viewmodel方面.
<ContentPresenter
Content="{Binding ElementName=txtCaseNumber, Path=(Validation.Errors).CurrentItem}" />
Run Code Online (Sandbox Code Playgroud)
另外,
System.Windows.Controls.Validation.GetHasError(txtCaseNumber)返回true.
如果有所作为,我将在winforms中托管WPF.我在代码或样式中找不到任何对Validation或ErrorTemplate的引用,所以我很确定这不是一个样式自己的目标.
Noe*_*edy 44
破了.
ErrorTemplate附加属性使用adorner层显示通过IDataErrorInfo报告的数据验证失败的错误模板.在所有情况下,Adorner图层并非始终可用于所有控件.您的控件或其父母之一需要明确提供一个.
默认的Window控件模板包含一个AdornerDecorator,可为其子项启用adorner图层.这就是为什么我的其他窗口显示我的错误模板就好了,因为这个窗口使用了默认的控件模板
没有显示我的错误模板的窗口使用了为我的窗口提供ControlTemplate的样式.此控件模板未提供<AdornerDecorator>,因此没有显示我的错误模板的装饰层.
修复就像包装我的窗口控件模板一样简单<AdornerDecorator>.
| 归档时间: |
|
| 查看次数: |
7332 次 |
| 最近记录: |