gpt4 book ai didi

wpf - WPF 中的 MVVM 和转换错误 - 将 View 中的 ConvertBack 异常与模型中的验证错误相结合?

转载 作者:行者123 更新时间:2023-12-04 16:20:11 29 4
gpt4 key购买 nike

我正在使用 Josh Smith 在 http://msdn.microsoft.com/en-us/magazine/dd419663.aspx 的文章中描述的 MVVM 模式开发 WPF 应用程序。 .

我想不出一种对 Convert Back 错误使用react的好方法(例如,当用户在绑定(bind)到 double 的文本框中键入一个字母时)。

Josh Smith 提出了一个验证系统,其中模型验证它自己的值并通过 SomeModel.IsValid 呈现 bool 结果。然后 Josh 使用 IsValid 的值作为某些按钮的谓词,例如表单上的保存按钮 - 如果表单尚未有效完成,则 IsValid 为 false,并且“保存”按钮被禁用。

这个方法真的很好用。但是,当用户在无法转换的文本框中键入值时,会发生 ConvertBack 错误。 ViewModel 的属性 setter 永远不会被调用,因此模型的属性永远不会更新。 IsValid 仍然为真。尽管 View 通过显示错误消息并突出显示错误(或任何可能的设置)来响应验证错误,但保存按钮仍然处于事件状态,因为模型的 IsValid 属性仍然为真,因为模型尚未更新.

是否有任何 MVVM 用户经历过同样的挑战?有任何想法吗?

一种建议是模型上的属性可以为 Nullable。然后,如果用户输入不可转换的日期(例如绑定(bind)到 double 的文本框中的字母),则转换器应将源设置为 Null。但是,我找不到这样做的简单方法 - 似乎需要为我需要功能的每种数据类型以及我需要它的每种数字格式编写自定义转换器。这似乎是一个非常糟糕的解决方案设计挑战。

有任何想法吗?

最佳答案

我找到了两篇解决这个问题的优秀文章:

卡尔·希夫利特的一篇:
http://karlshifflett.wordpress.com/mvvm/input-validation-ui-exceptions-model-validation-errors/

乔什·史密斯的一篇:

http://joshsmithonwpf.wordpress.com/2008/11/14/using-a-viewmodel-to-provide-meaningful-validation-error-messages/

在这里复制有点太复杂了,所以我只会将链接标记为答案。

关于wpf - WPF 中的 MVVM 和转换错误 - 将 View 中的 ConvertBack 异常与模型中的验证错误相结合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567279/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com