- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用以下文章来验证用户的输入:
http://weblogs.asp.net/monikadyrda/archive/2009/06/24/wpf-textbox-validation.aspx
http://weblogs.asp.net/monikadyrda/archive/2009/07/28/wpf-textbox-validation-2.aspx
我有一个包含 100 多个文本框的窗口,我需要检查所有文本框是否有效。
想象以下情况 -> 用户输入了无效值:
IsValid
的尝试最佳答案
有一篇很好的文章here处理这个问题——我使用了这种方法,效果很好。
基本思想是使用附加属性——称为“ValidationScope.Errors”——将 View 的验证范围绑定(bind)到 View 模型中的属性。
这是引用自链接文章的代码:
public class ValidationScope{ public static IList GetErrors(DependencyObject obj) { return (IList)obj.GetValue(ErrorsProperty); } public static void SetErrors(DependencyObject obj, IList value) { obj.SetValue(ErrorsProperty, value); } public static readonly DependencyProperty ErrorsProperty = DependencyProperty.RegisterAttached("Errors", typeof(IList), typeof(ValidationScope), new PropertyMetadata(null, ErrorsChanged)); public static void ErrorsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) { FrameworkElement element = (FrameworkElement)obj; element.BindingValidationError += delegate(object sender, ValidationErrorEventArgs e) { if (e.Action == ValidationErrorEventAction.Added) { GetErrors(obj).Add(e.Error); } else { GetErrors(obj).Remove(e.Error); } }; }}
You can see this attached dependency property works by listening to the framework's BindingValidationError
event, and adding/removing errors to the view-model target you specify. To use this in your code, simply bind the dependency property ValidationScope.Errors
to a target property in your view model:
<my:SomeUserControl my:ValidationScope.Errors="{Binding MyViewModel.Errors}" />
关于WPF 验证 : How to validate the whole page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16597343/
我是一名优秀的程序员,十分优秀!