gpt4 book ai didi

wpf - 验证错误模板未显示数据错误

转载 作者:行者123 更新时间:2023-12-03 12:05:44 25 4
gpt4 key购买 nike

这是一个有点 WPF whodunnit !我的验证认为它没有按预期出现

问题

基本上,我在我的 View 模型上使用 IDataErrorInfo 来提供有关数据输入错误的反馈。我可以看到它被调用并按预期工作,但是 WPF 永远不会显示绑定(bind)控件的验证错误模板!

我已经尝试过使用内置的默认文本框红色边框错误模板、样式错误模板和硬编码模板。在数据错误情况下,这些都不会显示。

这是我的 xaml 绑定(bind)代码:

<TextBox x:Name="txtCaseNumber"  
Text="{Binding Path=CaseNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>

奇怪的是,错误进入了 Validation.Errors 集合。以下代码导致我的 IDataErrorInfo 错误消息显示在绑定(bind)控件旁边。这让我认为问题出在 xaml 方面,而不是 viewmodel 方面。
<ContentPresenter 
Content="{Binding ElementName=txtCaseNumber, Path=(Validation.Errors).CurrentItem}" />

此外, System.Windows.Controls.Validation.GetHasError(txtCaseNumber)返回真。

如果这有所作为,我将在 winforms 中托管 WPF。我在我的代码或样式中找不到对 Validation 或 ErrorTemplate 的任何引用,所以我很确定这不是样式化自己的目标。

最佳答案

破解它。

ErrorTemplate 附加属性 uses the adorner layer显示有关通过 IDataErrorInfo 报告的数据验证失败的错误模板。装饰层是not always available适用于所有情况下的所有控件。您的控件或其 parent 之一需要明确提供一个。

默认的 Window 控件模板包含一个 AdornerDecorator,它为其子级启用装饰层。这就是为什么我的另一个窗口可以很好地显示我的错误模板的原因,因为这个窗口使用了默认的控制模板

没有显示我的错误模板的窗口使用了一种为我的窗口提供 ControlTemplate 的样式。此控件模板未提供 <AdornerDecorator> ,因此没有装饰层来显示我的错误模板。

修复就像用 <AdornerDecorator> 包装我的窗口控件模板一样简单。 .

关于wpf - 验证错误模板未显示数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3676266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com