У меня проблема с проверками между несколькими полями. Например, я получил ViewModel с именем RangeDateViewModel, который содержит 2 экземпляра класса с именем DateViewModel, каждый из которых представляет дату начала и дату окончания соответственно.
Так что мой переплет выглядит так -
<TextBox Text="{Binding StartDate.Date, ValidateOnDataError=True}">
<TextBox Text="{Binding EndDate.Date, ValidateOnDataError=True}">
Мой класс RangeDateViewModel реализует интерфейс IDataErrorInfo.
В моем плане RangeDateViewModel будет проверять, что дата начала предшествует дате окончания, применяя логику проверки в функции IDataErrorInfo ["propertyName"], например, так: *
public string this[string columnName]
{
get
{
return ValidationError();
}
}
Проблема в том, что это никогда не вызывается, и вместо этого вызываются свойства IDataErrorInfo, которые находятся в каждом из классов DateViewModel.
Полагаю, это связано с тем, что связанное свойство находится не на том же уровне RangeDateViewModel, а внутри дочернего DateViewModel.
Я думаю, что моя потребность достаточно проста, и для этой проблемы должно быть простое решение.
Я пытался использовать ValidationRules вместо IDataErrorInfo, но тогда у меня возникли проблемы с сообщением ViewModel о текущем состоянии проверки из ValidationRules.