我如何处理WPF验证和MVVM?

时间:2012-01-26 14:48:06

标签: c# .net wpf validation

我在MVVM模型中有一个WPF页面(作为我的视图)。 View是一个包含许多文本框的输入表单。我有一个自定义ValidationRule,用于验证每个文本框并相应地显示工具提示警告。但是,我只想要"提交"所有验证器通过时启用按钮。现在,我的#34;承诺"按钮的IsEnabled根据其他条件绑定到DataContext。我如何添加"只有在所有验证器通过时才会启用"当我的IsEnabled已经这样绑定了吗?

IsEnabled="{Binding IsDataLoaded}"

3 个答案:

答案 0 :(得分:5)

假设您将Button绑定到命令make the Command implement CanExecute,因此只有在验证规则验证时它才会返回true。

答案 1 :(得分:4)

您的提交按钮应绑定到RelayCommand中的ViewModel,并且只有在CanExecute()this.IsDataLoaded <时才设置this.IsValid为真/ p>

CommitCommand = new RelayCommand(
    param => SaveChanges()
    param => this.IsDataLoaded && this.IsValid
);

为了验证ViewModel是否有效,我建议使用IDataErrorInfo

答案 2 :(得分:0)

您可以将MultiBinding与您想要的转换器一起使用