gpt4 book ai didi

WPF 将 ViewModel 属性传递给验证

转载 作者:行者123 更新时间:2023-12-04 05:43:28 26 4
gpt4 key购买 nike

我必须在 xaml 中调用validationRules,并且我想将viewmodel(即在datacontext 中)属性作为参数传递。我怎么能做到这一点?

                    <Binding.ValidationRules>
<vm:RiskCodeValidation/>
</Binding.ValidationRules>

最佳答案

如果将 ValidationRule.ValidationStep 设置为 ValidationStep.CommitedValue 或 ValidationStep.UpdatedValue,则 Validate 方法中的 value 参数将是 BindingExpression 类型,您可以通过 BindingExpression.DataItem 属性获取 DataContext。

不幸的是,它只有在绑定(bind)源更新后才能工作。

这是一个例子:

public class RiskCodeValidation : ValidationRule
{
public RiskCodeValidation()
: base(ValidationStep.CommittedValue, true)
{
}

public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
var expression = value as BindingExpression;
if (expression != null)
{
var sourceItem = expression.DataItem;
if (sourceItem != null)
{
var propertyName = expression.ParentBinding != null && expression.ParentBinding.Path != null ? expression.ParentBinding.Path.Path : null;
var sourceValue = sourceItem.GetType().GetProperty(propertyName).GetValue(sourceItem, null);

// TODO: do validation logic based on sourceItem, propertyName and sourceValue.
}
}

return ValidationResult.ValidResult;
}
}

关于WPF 将 ViewModel 属性传递给验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10985206/

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