两个属性上的WPF验证

时间:2010-05-03 07:12:19

标签: wpf validation binding

我有一个用户控件,其中包含一个边框。我可以通过绑定到两个文本框来编辑用户控件宽度和边框宽度。我需要在代码中创建绑定时包含验证,以便边框宽度不能高于用户控件宽度。

2 个答案:

答案 0 :(得分:0)

使用依赖属性可以实现此目的。在Border Width上创建一个依赖项属性,当它将被更改为此属性时,它将被调用,你可以检查宽度是否大于usercontrol width,如果它是true,你可以抛出验证。

答案 1 :(得分:0)

我解决了我的问题,这很容易,我想要删除我的问题而不是回应它,但也许有人会觉得这很有用。

class MyUserControlValidationRule : ValidationRule
{
    private MyUserControl _control;
    public MyUserControlValidationRule(MyUserControl control)
    {
        _control = control;
    }

    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        int parameter = 0;
        try
        {
            if (((string)value).Length > 0)
            {
                parameter = int.Parse((String)value);
            }
        }
        catch (Exception e)
        {
            return new ValidationResult(false, "Illegal characters or " + e.Message);
        }

        if (parameter >= _control.Width)
        {
            return new ValidationResult(false, "Border width is bigger that the control width.");
        }
        return new ValidationResult(true, null);
    }
}