ValidationRule能否阻止控制状态更新?

时间:2013-02-13 14:24:16

标签: c# wpf binding validationrule

也许我没有正确使用ValidationRule,如果是这样,请告诉我正确的方法。

目前,我已经实现了一个继承自WarningForUncheckRule的类ValidationRule,并将其绑定到绑定。

<cc:StarCheckBox>
    <cc:StarCheckBox.IsChecked>
        <Binding>
            <Binding.Path>IsFavorate</Binding.Path>
            <Binding.ValidationRules>
                <vm:WarningForUncheckRule />
            </Binding.ValidationRules>
            <Binding.Mode>TwoWay</Binding.Mode>
        </Binding>
    </cc:StarCheckBox.IsChecked>
</cc:StarCheckBox>

我实现代码并返回false作为结果(这里是为了测试目的):

public class WarningForUncheckRule : ValidationRule
{
    public override ValidationResult Validate(object value, 
                                              CultureInfo cultureInfo)
    {
        return new ValidationResult(false, null);
    }
}

我的问题是,如果我在此处返回false,则只会显示错误消息,其中包含错误消息,但UI状态仍会更改

是否可以使用false ValidateResult 阻止用户界面更新

如果不是,是否还有其他方法可以实现此目的?

1 个答案:

答案 0 :(得分:0)

验证后调用viewmodel上的属性已更改,它应将旧值返回到编辑前的UI。