Должен ли мой ViewModel содержать URI или строку?

Это в некоторой степени относится к моему предыдущему вопросу, где люди указали мне в направлении MVVM.

Я пытаюсь понять, где именно должна работать эта работа. Мое представление содержит текстовое поле, в которое пользователь должен ввести URI.

Насколько я вижу, у меня есть два варианта:

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

Я предполагаю, что в целом вопрос заключается в том, как и где обрабатывать потенциально недействительные данные в структуре MVVM. Это, похоже, не охвачено ни одним из основных представлений MVVM, которые я просматривал. Спасибо за вашу помощь в том, чтобы все это прямо в моем уме:).

Ответ 1

По-моему, у вас должна быть ваша система проверки, проверяющая ввод от пользователя, как только она будет подтверждена как действительная, должна быть привязана конвертером к свойству Uri в ViewModel.

Все зависит от того, как вы настроите свою проверку, но я бы предположил, что ваша проверка должна произойти до того, как свойства будут установлены в ViewModel.

Надеюсь, что это поможет!