Я создаю диалог с использованием MVVM, который предлагает пользователю ввести URL http://в файл KML. Кнопка "ОК" должна быть включена, когда URL-адрес находится в правильном формате, и его необходимо отключить, если URL-адрес находится в неправильном формате.
Прямо сейчас кнопка привязана к ICommand, и логика CanExecute() выглядит так:
return !string.IsNullOrEmpty(CustomUrl);
Команда CanExecuteChanged добавляется к каждому нажатию клавиши, и пока она хорошо работает.
Теперь я хочу сделать немного фактической проверки. Единственный способ, которым я это знаю, заключается в следующем:
try
{
var uri = new Uri(CustomUrl);
}
catch (UriFormatException)
{
return false;
}
return true;
Это не bueno, тем более, что валидация происходит при каждом нажатии клавиши. Я мог бы сделать так, чтобы URI был проверен, когда пользователь нажимает кнопку "ОК", но я бы предпочел. Есть ли лучший способ проверить URI, кроме исключения исключений?