如何用WPF的ValidationRules在MVVM中实现长尾词的数据验证功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计833个文字,预计阅读时间需要4分钟。
在WPF中,实现View验证相对简单,可以通过使用`Validation.ErrorEvent`将错误事件冒泡到View的逻辑树上。通常情况下,我们只需为View添加事件监听代码来处理这类错误事件。以下是简化后的代码示例:
csharp// 为View添加事件监听view.ErrorEvent +=(sender, e)=>{ // 处理错误逻辑 // ...};
对于WPF中的验证, View验证实现起来很简单, 可以通道 Validation.ErrorEvent 冒泡传递到View的逻辑树上, 只是, 通常这样做的情况下, 我们需要为View添加事件代码监听这类错误事件, 然后进行处理。
这样做可以说是非常简单, 但是这样的硬编码的, 基本上每个模块每个功能, 你都必不可少的为其进行重复的工作, 这是一项非常枯燥且无聊的体力活!
于是, 则考虑MVVM的架构中, 如何把这种模式传递到ViewModel中, 使得前端的验证, 对于ViewModel仍然有效。
实现的原理, 如图所示:
在此之前, 对于View前端验证需要做的一些操作步骤,
- 1.为验证的属性添加自定义验证类
- 2.设置验证错误的通知属性 NotifyOnValidationError="True" 。
本文共计833个文字,预计阅读时间需要4分钟。
在WPF中,实现View验证相对简单,可以通过使用`Validation.ErrorEvent`将错误事件冒泡到View的逻辑树上。通常情况下,我们只需为View添加事件监听代码来处理这类错误事件。以下是简化后的代码示例:
csharp// 为View添加事件监听view.ErrorEvent +=(sender, e)=>{ // 处理错误逻辑 // ...};
对于WPF中的验证, View验证实现起来很简单, 可以通道 Validation.ErrorEvent 冒泡传递到View的逻辑树上, 只是, 通常这样做的情况下, 我们需要为View添加事件代码监听这类错误事件, 然后进行处理。
这样做可以说是非常简单, 但是这样的硬编码的, 基本上每个模块每个功能, 你都必不可少的为其进行重复的工作, 这是一项非常枯燥且无聊的体力活!
于是, 则考虑MVVM的架构中, 如何把这种模式传递到ViewModel中, 使得前端的验证, 对于ViewModel仍然有效。
实现的原理, 如图所示:
在此之前, 对于View前端验证需要做的一些操作步骤,
- 1.为验证的属性添加自定义验证类
- 2.设置验证错误的通知属性 NotifyOnValidationError="True" 。

