Привязка текстового поля WPF не отвечает при запуске ValidationRule - PullRequest
1 голос
/ 16 ноября 2010

У меня есть текстовое поле, к которому применено ValidationRule:

 <TextBox Style="{StaticResource StandardTextBox}" 
                 Grid.Column="1" Grid.Row="4" 
                 IsReadOnly="{Binding SaveModeText}"
                 MaxLength="50">
            <TextBox.Text>
                <Binding Path="Individual.SurName"
                         UpdateSourceTrigger="PropertyChanged"
                         ValidatesOnDataErrors="True"
                         ValidatesOnExceptions="True"
                         NotifyOnValidationError="True">
                    <Binding.ValidationRules>
                        <valid:RequiredTextBoxValidationRule 
                            ErrorMessage="Please enter a last name" />
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>

Когда страница загружается, текстовое поле содержит правильное значение на основе его привязки.Если я удаляю значение из текстового поля, ValidationRule срабатывает правильно, и я вижу сообщение об ошибке, как и ожидалось.Мое приложение содержит кнопку «Отменить изменения», которая перезагружает DataContext.Была надежда, что он сбросит все привязки, и снова в этом текстовом поле будет отображаться исходное значение.По какой-то причине все другие значения на странице, с которыми не связан ValidationRule, будут сброшены должным образом, но это текстовое поле - нет.

Если я удалю ValidationRule из XAML, значение сбрасывается правильно.Если я обрабатываю проверку через IDataErrorInfo, проверка запускается правильно, и значение сбрасывается правильно.Поскольку я использовал ValidationRules во всем приложении, мне было интересно, сталкивался ли кто-нибудь с этой проблемой и решил ее.На этом этапе я бы предпочел придерживаться реализованных ValidationRules, если это возможно, вместо того, чтобы переключать все на IDataErrorInfo.

1 Ответ

0 голосов
/ 16 ноября 2010

Поскольку вы изменяете значение в коде, вам не нужно иметь Mode = TwoWay в привязке для его обновления? У меня нет времени копаться и смотреть, если это не так, но это может быть место для начала.

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