【GHS】(Validation.HasError)的控件自动获

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-12-30

为了实现这个功能用到了几个入门知识,这篇文章讲解如何组合这几个入门知识实现需求: - [Validation.Error 附加事件](
本帖含有隐藏内容,请您 回复 后查看
' target='_blank'>
本帖含有隐藏内容,请您 回复 后查看
[/reply]) - [WPF 中的树](
本帖含有隐藏内容,请您 回复 后查看
) - [附加属性](
本帖含有隐藏内容,请您 回复 后查看
) ## 2. Validation.Error 附加事件 为了实现自动获得焦点这个需求,我们首先需要一个和数据验证错误相关的事件通知。[Validation 类](
本帖含有隐藏内容,请您 回复 后查看
) 提供了很多支持数据验证的方法和附加属性,其中这次用到的是 [Validation.Error 附加事件](
本帖含有隐藏内容,请您 回复 后查看
' target='_blank'>
本帖含有隐藏内容,请您 回复 后查看
[/reply]),它在绑定元素遇到验证错误时触发。使用方式如下: ``` CS Validation.AddErrorHandler(target, (s, e) => { //some code }); ``` 注意,为了使用这个事件,数据绑定中的 注意,为了使用这个事件,数据绑定中的 [NotifyOnValidationError](
本帖含有隐藏内容,请您 回复 后查看
) 必须设置为 `true`: ``` XML Text="{Binding Name, Mode=TwoWay, NotifyOnValidationError=True}" ``` ## 3. WPF 中的树 使用 [VisualTreeHelper](
本帖含有隐藏内容,请您 回复 后查看
) 遍历 VisualTree,再通过 [Validation.GetHasError](
本帖含有隐藏内容,请您 回复 后查看
) 判断元素是否具有 [ValidationError](
本帖含有隐藏内容,请您 回复 后查看
),这样就可以找出所有数据验证错误的元素。我在以前的文章中提供了一个用于遍历 VisualTree 的扩展方法类 [VisualTreeExtensions](https://www.cnblogs.com/dino623/p/VisualTreeExtensions.html),这次我直接使用它找出第一次数据验证出错的元素: ``` CS var root = Window.GetWindow(target).Content as UIElement; var errorElement

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    106

  • 帖子

    82

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0864s Mem:2060Kb