|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
Вот такой вопрос новичка. Сделано по шаблону MVVM, есть вью и для нее вью модель. TextBoх на вью связан со свойством Height обьекта Map вью модели: Код: xml 1.
Пусть свойство Height имеет тип double. Когда я на форме в это поле ввожу неправильного формата значение, скажем строку "23/34", и перехожу на другой элемент, то граница текстового поля становится красной и при этом я могу редактировать другие элементы и в конце концов сохранить данные (при этом сохраняется предыдущее "правильное" число). Вопрос - как лучше сделать так, чтобы при неправильном формате введенного значения и дальнейшей смене фокуса программа выводила сообщение и не давала редактировать другие элементы? Первое, что приходит в голову это в каждом элементе обработать событие потери фокуса и сделать проверку, но это уж очень криво, по-моему. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2012, 14:34 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
Гуглите: IDataErrorInfo ValidationRule ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2012, 20:13 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
Nicky_N, ок, спасибо, сделал через ValidationRule с выводом сообщения об ошибке: Код: xml 1. 2. 3. 4. 5. 6. 7.
Осталась пара вопросов. Первый - у меня поле Map.Height имеет тип double? и я хочу, чтобы пустое значение в текстовом поле не считалось за ошибку и приводило к null в самом свойстве. Как этого добиться? Сейчас считает за ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 13:32 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
проверка полей в MVVM, как именно вы проверяете в ValidationRule? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 16:14 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
Nicky_N, ну вот, например, делаю класс: Код: c# 1. 2. 3. 4. 5. 6. 7.
и для поля на форме: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
для пустого поля, к которому прибинедно свойство типа double? у меня все равно получается ошибка. в этом случае мне хочется, чтобы свойиство становилось null. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 16:29 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
проверка полей в MVVM, Не понятно, в чем смысл вашего правила проверки: всегда возвращать положительный результат проверки? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 17:32 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
Nicky_ ну это просто пример, я убрал все лишнее. но даже с этим - проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 17:42 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
проверка полей в MVVM, когда я задавал вопрос о том, как именно вы проверяете, я имел в виду код вашего класса "со всем лишним". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2012, 18:08 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
Nicky_N, я может не очень корректно задал последний вопрос, переформулировал его в соседнем топике. там проблема возникает даже если ничего специально не проверять. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 09:53 |
|
проверка полей в MVVM
|
|||
---|---|---|---|
#18+
проверка полей в MVVM, У меня получилось сделать это, но дополнительно пришлось использовать конвертер. Тут еще есть нюанс: валидация срабатывает до вызова конвертера и это неудобно, но как сделать по-другому мне неизвестно (было бы удобнее, если бы конвертер в данном случае вызывался до валидатора). См. код. Валидатор Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Конвертер Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
XAML Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 11:21 |
|
|
start [/forum/topic.php?fid=21&fpage=34&tid=1441562]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 136ms |
0 / 0 |