Sto creando una finestra di dialogo utilizzando MVVM che richiede all'utente di digitare un URL http: // in un file KML. Il pulsante "OK" deve essere abilitato quando l'URL è nel formato corretto e deve essere disabilitato quando l'URL è in un formato non corretto.Il modo migliore per indurre un utente a inserire un URL correttamente formattato?
In questo momento il pulsante è associato a un ICommand, e la logica per CanExecute() si presenta così:
return !string.IsNullOrEmpty(CustomUrl);
evento CanExecuteChanged del comando è sollevata su ogni battitura, e finora sta funzionando bene.
Ora voglio fare un po 'di convalida effettiva. L'unico modo che conosco per farlo è la seguente:
try
{
var uri = new Uri(CustomUrl);
}
catch (UriFormatException)
{
return false;
}
return true;
Questo è senza bueno, soprattutto perché la convalida sta accadendo su ogni tasto. Potrei fare in modo che l'URI sia validato quando l'utente preme il pulsante OK, ma preferirei di no. C'è un modo migliore per convalidare l'URI oltre a rilevare le eccezioni?
È assolutamente necessario eseguire la convalida una volta per ogni sequenza di tasti? Non puoi semplicemente eseguire la convalida quando fai clic sul pulsante OK? –
Potrei. Ma mi piace che l'utente sappia che l'URL non è valido prima di spostare il mouse e fare clic sul pulsante. – Phil
Puoi usare ['Uri.TryCreate'] (http://msdn.microsoft.com/en-us/library/system.uri.trycreate.aspx)? –