相关疑难解决方法(0)

MVVM - 验证

我们试图在mvvm中弄清楚在业务逻辑或模型中进行验证的验证.我在业务逻辑中实现了异常类型的验证 - 可以在这里找到简化的图表: 替代文字

如果我们有很多输入彼此独立,那么没有问题,抛出异常,文本框会捕获一个标记,它为每个错误的输入设置了红色边框.但是,当我们有依赖值时,我们就遇到了麻烦.例如

  • 模型中的Value1和Value2必须不一样,所以我们在每个寻找equals值的函数中都有一个validate函数,如果发生这种情况则抛出异常

  • 现在,如果我们将Value1设置为0而将Value2设置为1,一切都很好

  • Value1在GUI中设置为1 - >这个被标记为红色,因为未触发其他值的验证,因此GUI中的Value2未标记为错误

  • 在GUI中将Value2设置为2,现在我们已达到有效状态,但只有Value2得到验证,因此Value1仍被标记为有错

有没有一个共同的模式来解决这个问题?我们不希望在两个文本框之间的GUI中引入依赖关系,因为此逻辑应仅存在于业务逻辑层中.

除了通过异常实现验证之外,还可以实现IDataErrorInfo接口,但问题仍然存在,没有办法强制依赖值再次验证它们的值,至少没有我能看到:)

任何帮助表示赞赏

欢呼,曼尼


[清理,删除不必要的步骤]


15.11.2010 - 第2部分

好的,在这里重新思考,我们将继续使用businesslogic层.这是我们当前计划的配置: 替代文字 (图像在这里缩小了一点,请在单独的窗口打开它以完整尺寸显示)一切都或多或少清晰,除了如果数据模型如何通知不同编辑器的所有视图模型/模型克隆在业务逻辑下变了.一种方法是跟踪创建它们的业务逻辑中的克隆模型.使用业务逻辑commit()更改数据模型时,可以向所有其他已注册的模型克隆通知更改并进一步传播它们.或者,业务逻辑可以发布所有视图模型订阅的事件,以便他们也能获得更改 - 任何人都可以给我一个提示更好的提示吗?

再次感谢您的帮助,抱歉,我是如此精神错乱;)

c# validation business-logic mvvm

16
推荐指数
1
解决办法
9521
查看次数

标签 统计

business-logic ×1

c# ×1

mvvm ×1

validation ×1