gpt4 book ai didi

c# - 如果验证结果为假,则禁用保存按钮,使用自定义 ValidationRule

转载 作者:太空宇宙 更新时间:2023-11-03 15:32:31 25 4
gpt4 key购买 nike

我看到了:

Using WPF Validation rules and disabling a 'Save' button

两个建议的解决方案使用 IDataErrorInfo或通过将处理程序附加到 Validation.ErrorEvent验证.AddErrorHandler()。 AddErrorHandler 有两个参数,依赖对象和处理程序。由于我在 ViewModel 中执行此操作,并且没有引用 DO,我如何通过使用我的自定义规则进行验证来实现此目的。

验证规则:

public class NameValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if (string.IsNullOrWhiteSpace(((string)value)))
{
return new ValidationResult(false, "Must not be empty");
}

return new ValidationResult(true, null);
}
}

以及使用它的控件:

<TextBox>
<TextBox.Text>
<Binding Path="Customer.FirstName" UpdateSourceTrigger="LostFocus" ValidatesOnDataErrors="True">
<Binding.ValidationRules>
<validators:NameValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>

<Button Content="Save" Command="{Binding SaveAddCommand}" CommandParameter="{Binding Customer}"/>

那么,当文本框验证规则返回 false 时,是否有一种“MVVM”方法可以更改 SaveAddCommandCanExecute,而无需在中提供依赖对象AddHandler 的代码?

最佳答案

我认为这应该可行:

 public class NameValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if (string.IsNullOrWhiteSpace(((string)value)))
{
return new ValidationResult(false, "Must not be empty");
ButtonSave.IsEnabled = false;
}

return new ValidationResult(true, null);
}
}

希望对你有用;)

关于c# - 如果验证结果为假,则禁用保存按钮,使用自定义 ValidationRule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276739/

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