【发布时间】:2019-04-13 02:03:06
【问题描述】:
我们正在和我的一些同学一起为大学做一个项目。我们必须做一个桌面应用程序,但我们遇到了一些问题。基本上很难理解 MVVM,但我在验证方面遇到了一些问题。首先我们想使用INotifyDataErrorInfo接口进行验证,因为老师推荐了这个,但是我们没看懂。
所以我们用这样的 ValidationRules 解决了验证问题:
public class CantBeNullRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
string charString = value as string;
if (charString.Length == 0)
{
return new ValidationResult(false, $"The box can't be empty");
}
return new ValidationResult(true, null);
}
}
我们为视图上的文本框绑定这些验证:
<TextBox x:Name="pwdPassword" Grid.Column="2" Grid.Row="4" Grid.ColumnSpan="4" BorderThickness="0,0,0,1" VerticalAlignment="Bottom" BorderBrush="#FF5DC2D5" Foreground="Black" SelectionBrush="#FF5DC2D5" FontFamily="Open Sans SemiBold" FontSize="10">
<TextBox.Text>
<Binding Path="Password" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<rule:CantBeNullRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
问题是,当我们打开视图时,这个“CantBeNull”规则不会执行,首先我们必须在文本框中写一些东西。我希望在单击按钮时检查视图上的每个验证。如果其中一个验证为假,则写出错误消息,否则执行命令。
我们想要使用这些 ValidationRules,因此我们正在等待此类验证的答案。
【问题讨论】:
标签: c# validation model-view-controller mvvm validationrules