Должен ли мой ViewModel содержать URI или строку?
Это в некоторой степени относится к моему предыдущему вопросу, где люди указали мне в направлении MVVM.
Я пытаюсь понять, где именно должна работать эта работа. Мое представление содержит текстовое поле, в которое пользователь должен ввести URI.
Насколько я вижу, у меня есть два варианта:
- Привязать к объекту
Uri
в моей модели ViewModel, используя конвертер и валидатор, чтобы проверить, является ли URI действительным и преобразовать его, если он есть. Затем ViewModel заканчивается либо действительным Uri
, либо DependencyProperty.UnsetValue
. (Я использую что-то вроде this как комбинированный конвертер/валидатор, это хорошая практика MVVM?)
- Привяжите к
string
в моей модели ViewModel и сделайте преобразование/проверку, если необходимо для кода ViewModel. Я не совсем уверен, что этот код предназначен для того, чтобы ViewModel отображал представление, что URI-строка является недопустимой, и отображает соответствующие ошибки проверки.
Я предполагаю, что в целом вопрос заключается в том, как и где обрабатывать потенциально недействительные данные в структуре MVVM. Это, похоже, не охвачено ни одним из основных представлений MVVM, которые я просматривал. Спасибо за вашу помощь в том, чтобы все это прямо в моем уме:).
Ответы
Ответ 1
По-моему, у вас должна быть ваша система проверки, проверяющая ввод от пользователя, как только она будет подтверждена как действительная, должна быть привязана конвертером к свойству Uri в ViewModel.
Все зависит от того, как вы настроите свою проверку, но я бы предположил, что ваша проверка должна произойти до того, как свойства будут установлены в ViewModel.
Надеюсь, что это поможет!