У меня возникли проблемы с проверкой текстового поля в столбце DataTemplate сетки. Свойство, связанное с текстовым полем, является «двойным» значением. Вот мой XAML код TextBoxПроверка достоверности Проверка Silverlight
<TextBox Text="{Binding SubTotalRawHours, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"
MinHeight="24" VerticalAlignment="Top" BindingValidationError="ValidateTime" />
и здесь свойство
private double _SubTotalRawHours;
public double SubTotalRawHours
{
get { return _SubTotalRawHours; }
set
{
if (value < 0)
{
throw new Exception("Value not allowed");
}
_SubTotalRawHours = value;
NotifyPropertyChanged("SubTotalRawHours");
}
}
Теперь странный вопрос в том, что если я вхожу алфавитов, код отображения всплывающей подсказки с сообщением об ошибке «Вход не в правильном формате ", что является правильным. Но если я ввожу отрицательное значение, я получаю исключение «Исключение не обрабатывалось кодом». , который здесь происходит
if (value < 0)
{
throw new Exception("Value not allowed");
}
Я пробовал все, я даже пытался поставить текстовое поле вне сетки, но его не работает.
Приятно оценить некоторые входы здесь.
Edit 1
ОК, сейчас я сделал некоторые изменения в код и у меня есть обходной путь, вместо "ValidatesOnExceptions=True"
, я "ValidatesOnDataErrors=True"
и мой класс модели теперь также наследует от IDataErrorInfo
и я внедрили IDataErrorInfo memeber в моем классе
private string _dataError = string.Empty;
const string _ErrorsText = "Errors";
string IDataErrorInfo.Error
{
get { return _dataError; }
}
public string this[string propertyName]
{
get
{
_dataError = null;
switch (propertyName)
{
case "OldHours":
if (OldHours < 0 || OldHours > 100)
{
return "Please enter a value between 0 - 100.";
}
break;
}
return null;
}
}
Это работает (кроме подсказки, показывая на неправильном месте, но это нормально). Я все еще не понимаю, почему мой код не заметил никаких исключений. Есть ли что-то, что я должен был добавить в мой модельный класс?
Внутреннее исключение подходит как null. –
Я думаю, что трудно сказать точную проблему. кулак, вы предоставляете нам более подробную информацию. Потому что отсюда нет никакой ошибки. –
Посмотрите на эту статью Я попытался следовать ей http://www.codeproject.com/Articles/86955/Silverlight-4-Data-Validation-Tip-of-the-Day-Part Кроме того, я не уверен какую другую информацию я могу предоставить? –