【发布时间】:2012-12-08 13:34:39
【问题描述】:
我对 WinForms 数据绑定和自定义验证有点陌生。
假设我的域中有一个简单的模型:
public class SecurityObject
{
[StringLength(25)]
public string Name { get; set; }
public bool HasAccess { get; set; }
}
Name 属性数据绑定到 TextBox。我想应用自定义属性验证,以便在违反验证时显示工具提示。 (注意:是的,我知道我可以在文本框上设置 MaximumLength 属性,并计划这样做,但这不是我现在的问题。)
我的问题是,应该在什么时候触发验证?
似乎无法在 TextBox_Validating(..) 中触发,因为此时新值尚未写回模型。
它可以在 TextBox_Validated(..) 处触发,因为此时该值已写回模型。但是,这似乎不合适,因为 TextBox 认为它是有效的,而它所绑定的模型却不是 - 对我来说似乎很可疑。
我想您可以禁用自动绑定,然后通过调用 DataBinding.WriteValue(...) 在 TextBox_Validating(...) 中手动触发它 - 但付出这么多额外的努力和首先击败了一半的数据绑定点。
那么,在数据绑定时运行模型验证的推荐方式是什么?
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
好的,谢谢。下次会记得
标签: c# winforms data-binding