Как я могу выборочно проверить форму в WPF? - PullRequest
2 голосов
/ 04 мая 2009

В настоящее время я использую код подтверждения, указанный здесь в приложении. Я хотел бы выборочно проверить страницу. Под этим я подразумеваю следующее: у меня есть форма с привязкой к данным с правилами валидации. У меня также есть флажок, который, когда установлен, отключает и очищает значения нескольких связанных текстовых полей. Могу ли я установить свойство в этих текстовых полях, чтобы механизм проверки не включал их при проверке?

Ответы [ 2 ]

2 голосов
/ 07 мая 2009

Возможно, если вы написали прикрепленное свойство для вашего класса Validator и сначала проверили его в своем методе IsValid.

static class Validator
{
    public static readonly DependencyProperty SkipValidationProperty =
        DependencyProperty.RegisterAttached("SkipValidation", typeof(bool), typeof(Validator),
        new UIPropertyMetadata(false));
    public static bool GetSkipValidation(DependencyObject obj)
    {
        return (bool)obj.GetValue(SkipValidationProperty);
    }
    public static void SetSkipValidation(DependencyObject obj, bool value)
    {
        obj.SetValue(SkipValidationProperty, value);
    }


    public static bool IsValid(DependencyObject parent)
    {
        if (Validator.GetSkipValidation(parent)) return true;
       //Rest of the validation code
    }


}

Тогда вы можете сделать что-то простое:

<StackPanel>
 <TextBox x:Name="txt" local:Validator.SkipValidation="{Binding IsChecked, ElementName=cbx}" />
 <CheckBox x:Name="cbx" >Skip Validate?</CheckBox>        
</StackPanel>
0 голосов
/ 06 мая 2009

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

Но это сработает только (?), Если все эти правила проверки будут в ControlTemplate или DataTemplate.

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