绑定到viewmodel属性的文本框文本 - 检测视图的无效数据状态

时间:2012-04-10 14:31:58

标签: wpf validation xaml data-binding mvvm

我有一个视图,文本框绑定到viewodel中的double属性。 WPF或MVVM或任何足以在用户在文本框中输入无效数据时向用户显示可视指示(控件周围的红框)的内容。在这种情况下,invalida数据意味着无法转换为double并与viewmodel属性同步的数据。

我想要做的是检测视图的控件何时具有导致它们不再绑定的数据。我知道我可以limit what the user can type in via code behind,但我不确定我是否愿意这样做。

我也知道我可以创建一个控制数据验证方法来验证所有控件都是所需的数据类型,但除非必须,否则我宁愿不这样做。

是否有一种智能且简单的方法告诉xaml禁止用户输入会导致绑定问题?

textbox的绑定属性是什么,其状态导致控件周围的红色框,或者更好的是我如何获得文本框的绑定状态失败?

我可以对整个视图/窗口/布局/面板进行彻底调用,以递归方式检查所有绑定,以确保其数据与viewmodel同步,因此有效,或者某些对象不同步,由于某些绑定数据的无效性,无效或仅发生绑定?

我刚才想到了一个想法。如果viewmodel是为视图构建的,我应该制作高度和宽度等属性的字符串吗?要有效,它们必须是双打的,但这些是用户可以键入的值。这将允许我以与验证对象状态的其余部分相同的方式验证属性。

除了最后的启示之外,还有人对我在这里提出的问题有一些热门提示吗?

感谢专业人士。

2 个答案:

答案 0 :(得分:0)

我使用字符串类型作为我的属性,使用IDataErrorInfo检查输入。好处是没有绑定异常,视图和视图模型始终保持同步。

尽管如此,您还可以使用maskedbehaviour作为控件,因此用户只需输入不会引发bindingerror的值。

答案 1 :(得分:0)

尝试使用ValidationRules。然后在您的验证类中,如果值是字符串或数字,则执行您的条件。