问题标签 [idataerrorinfo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6879 浏览

wpf - 如何强制 WPF 重新验证控件?

我有一个带有业务规则的屏幕,它根据业务数据显示一些字段,而不显示其他字段。然后我使用可见性来显示/隐藏它们。

我的业务对象实现了 IDataErrorInfo。

我遇到的问题是某些验证仅在显示该字段时才适用。

在此代码摘录中,第一个 IF 仅在 type_account 为 INTERNAL 时进行验证

我遇到的问题是,由于我的 BO 的初始状态不是“内部”,那么即使在用户选择“内部”之后,验证也不会再次发生。

我如何“强制”在第一次之后进行验证。当然我已经检查过如果初始状态是“内部”那么它可以工作

0 投票
2 回答
2902 浏览

wpf - 带有多个错误消息的 IDataErrorInfo 属性

似乎其他人遇到了这个问题: Validation.HasError does not trigger again if new error come in while already true

Validation.Error 未使用最新的错误消息进行更新。

它显示上一个错误,而不是最后一个实际调用的错误。当我记录每次返回时,返回的 PropertyX 大于或 PropertyX 小于,但它不会在我的工具提示中显示该消息。它将显示“必需”。

我还发现,当返回 PropertyX 大于或 PropertyX 小于时,我的工具提示转换器不会被调用。

这是验证代码:

到底是怎么回事?

0 投票
2 回答
1745 浏览

wpf - 如果是 int 列 DataGrid,IDataErrorInfo 不会触发

我有一个 DataGrid,它的 Column 绑定了一个“int”类型的属性。我正在使用 IDataErrorInfo 进行验证。我的验证规则运行良好,一旦我更改单元格的值,它们就会被触发。假设用户输入的值小于 0,我在工具提示中显示相应的错误。当用户清除文本框的值时出现问题。在这种情况下,IDataErrorInfo 永远不会触发,因此我无法通过工具提示显示用户验证错误,说明该值不能为空。DataGrid 在文本框周围加上红色边框,这很好,还有一个“!” 在行标题处签名,但工具提示中没有验证错误,因为 IDataErrorInfo 从未被触发。如果文本框的值被清除,我可以做些什么来触发 IDataError 信息?

编辑:
XAML

DisplayOrder 属性

0 投票
2 回答
892 浏览

c# - 在使用 IDataErrorInfo 在 MVVM 中执行验证时,我应该在哪里执行检查以查看数据库中是否已存在值?

开始使用所有这些 MVVM 的东西,我正在关注Josh Smith 的这篇文章,其中讨论了使用 MVVM 时的验证方法。这个例子很简单,我开始想知道如何在我自己的应用程序中使用它。

在我的 BLL 中,我有一个BookInfo实现 IDataErrorInfo 以报告无效值的类,例如“发布日期不能在将来”或“页数不能为负数”。然后我AddBookViewModel会检查新创建的状态BookInfo,看看是否存在错误,并且AddBookView会在相应的文本框旁边显示一个红色斑点。这些东西很简单,就像帖子中的示例一样。

现在我的BookInfo班级还拥有一个作者 ID 列表。在向我的数据库添加新 BookInfo 时,我需要检查这些作者 ID 是否已经存在。

是否应该在我的BookInfo课堂上进行这项检查?如果是这样,那么我必须将 BLL 的AuthorManager对象传递给BookInfo' 的构造函数,因为前者将包含诸如CheckIfExists(int authorID).

这是推荐的方法吗?如果数据库中有很多记录怎么办?动态检查会影响性能吗?

另一方面,在BookInfo课堂上和其他地方进行一些检查似乎有点混乱......尤其是当所有这些检查都可以归类到同一组时......即。确保新创建的BookInfo对象有效。或者也许我错了,因为我真的没有经验来做出正确的判断。

一些指导?

0 投票
1 回答
2416 浏览

wpf - 强制选择一个或多个复选框

我有三个复选框,它们有自己的错误检查,以检查它们是否有效,但我还想强制在继续之前必须至少检查一个。我目前正在使用 IDataErrorInfo 进行单个错误检查,并尝试使用 BindingGroups 来检查是否至少检查了一个但没有成功。

这是 XAML,

以及后面的错误检查代码

如果至少有一个未被选中,关于如何让复选框显示错误的任何建议?

0 投票
5 回答
792 浏览

mvvm - MVVM 模型应该是什么样的?

您好,我有 3 个关于 MVVM 模型的问题。

  1. 有没有办法绕过那个多余的PropertyChanged("PropName");
  2. 将 POCO 对象包装到 WPF 的最佳方法是什么INotifyPropertyChanged, IDataErrorInfo
  3. 我应该如何在 ViewModel 中与(WPfWrapers - POCO)交互 - 通过强制转换或属性......

谢谢。

0 投票
1 回答
1435 浏览

wpf - WPF Data Validation? Anything out there better than IDataErrorInfo?

Is there a preferred practice to do Data Validation from within your ViewModel?

Looking into it some people seem to prefer IDataErrorInfo and some prefer to roll out their own validation frameworks (http://www.codeproject.com/KB/WPF/wpf_custom_validation.aspx)?

I'm wondering what the "Best Practice" is for Data Validation? Is there something that is accepted by the community when it comes to adhering to the M-V-VM guidelines?

Oh, and an FYI, I'm using Prism as my MVVM framework, but I don't think it has any laid out code for Validation assistance.

0 投票
1 回答
115 浏览

silverlight - 绑定数据格式中的 Silverlight 错误

当属性通过绑定 (MVVM) 获取其值时,我试图处理所有可能的错误,例如超出给定范围。

通过在我要检查的控件中使用“ValidatesOnDataErrors”,这是完美的。

当我尝试检查给定值是否被模型视图中的该属性接受时,问题就来了。

例如,当我在 DateTimePicker 控件中写入“june”时,绑定被破坏(属性是 DateTime),因此它永远不会获得它的值,我无法像处理其余规则一样控制错误。

我应该如何尝试这个?有什么解决办法吗?

提前致谢!!

0 投票
2 回答
12765 浏览

validation - 如何在 ItemsControl 内的 TextBox 上使用 ValidatesOnDataErrors

我正在尝试使用 IDataErrorInfo 验证 TextBox 的内容。下面列表的来源是一个列表,每个项目都是显示的。当我ValidatesOnDataErrors=True在 TextBox 上放置文本的绑定时,它没有按预期工作。我该怎么做呢?

更新: 发布模型、视图模型、视图和代码隐藏的精简版本

ViewModel 和模型

代码背后

看法

0 投票
0 回答
1197 浏览

wpf - WPF + MVVM + 企业库验证块

我正在启动一个新的 WPF MVVM 应用程序,并且试图了解如何“比以前更好地”处理验证 - 在我使用IDataErrorInfo模型和 viewModel 之前。它工作正常,但以后很难扩展,并且在大多数情况下需要大量手动接线。我确信这IDataErrorInfo仍然是连接 ViewModel 验证的好方法,但我想尝试使用 Enterprise Library 来验证模型,但是有没有办法一次实际验证一个属性而不是整个对象?

还是有其他巧妙的方法来使用 EL 生成的配置?

有什么想法或其他建议吗?

更新

我想我或多或少找到了我一直在寻找的东西:(来自http://entlib.codeplex.com/discussions/233057

但这意味着我ViewModel必须处理模型实例,而不是执行以下操作:

看起来我必须在模型实例上工作或在ViewModel层中验证——我希望避免这种情况。

...还是我错过了对大多数人来说非常知名且显而易见的东西...?

欢迎任何建议。