Проверка WPF на двух свойствах - PullRequest
0 голосов
/ 03 мая 2010

У меня есть пользовательский элемент управления, в котором где-то есть граница. Я могу редактировать ширину пользовательского элемента управления и ширину границы от привязки к двум текстовым полям. Мне нужно включить проверку при создании привязки в коде, чтобы ширина границы не могла быть выше ширины пользовательского элемента управления.

Ответы [ 2 ]

0 голосов
/ 03 мая 2010

Я решил свою проблему, это было довольно легко, я думал удалить свой вопрос лучше, чем ответить на него, но, возможно, кто-то найдет это полезным.

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);
    }
}
0 голосов
/ 03 мая 2010

Используя свойство зависимости, вы можете достичь этого. Создайте свойство зависимости для вашей ширины границы, и когда когда-либо будет изменено это свойство, оно будет вызвано, и вы можете проверить, больше ли ширина, чем ширина пользовательского контроля, если это правда, вы можете бросить проверку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...