Я применил проверки требуемой проверки поля в текстовом поле wpf, используя класс ValidationRule . Мой код:Проблема с валидацией в WPF
public class RequiredField : ValidationRule
{
private String _errorMessage = String.Empty;
public string ErrorMessage
{
get { return _errorMessage; }
set { _errorMessage = value; }
}
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
var str = value as string;
if (String.IsNullOrEmpty(str))
{
return new ValidationResult(false, this.ErrorMessage);
}
return new ValidationResult(true, null);
}
}
И код XAML ниже:
<TextBox Name="txtName" MaxLength="50">
<TextBox.Text>
<Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<myValidtaion:RequiredField ErrorMessage="Please enter Name." />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Это, кажется, работает хорошо. Но проблема в том, что после того, как я сохраню действительные данные в базе данных и очистил базу данных, эта проверка снова запущена, и снова появится сообщение проверки.
Как я могу избежать этой ситуации?
Можете ли вы остановиться в 'Validate' и предоставить стек вызовов? –
Вы имеете в виду очистить поле, а не базу данных, я думаю? потому что, если это то, что вы имеете в виду, оно будет рассматривать его как изменение и, следовательно, подтверждать его снова ... Kinda имеет смысл – Noctis
@ Ноктриса, я понимаю, но хочу предотвратить это. Milie, стек вызовов не имея никакого большой информации REMTools.dll! REMTools.RequiredField.Validate (значение объекта, System.Globalization.CultureInfo CultureInfo) Линия 27 \t C# я упускаю что-нибудь здесь? –