我正在使用MVVM創建一個對話框,它提示用戶輸入一個http://到KML文件的URL。當URL格式正確時,需要啓用「確定」按鈕,並且URL格式不正確時需要禁用該按鈕。讓用戶輸入格式正確的URL的最佳方式是什麼?
眼下按鈕被綁定到一個ICommand,以及CanExecute邏輯()看起來是這樣的:
return !string.IsNullOrEmpty(CustomUrl);
命令的CanExecuteChanged事件引發的每次擊鍵,到目前爲止,它的工作好。
現在我想做一點實際驗證。我知道要做到這一點的唯一方法如下:
try
{
var uri = new Uri(CustomUrl);
}
catch (UriFormatException)
{
return false;
}
return true;
這不是bueno,尤其是因爲驗證發生在每個按鍵上。我可以這樣做,以便在用戶點擊OK按鈕時驗證URI,但我寧願不要。有沒有更好的方法來驗證除捕獲異常之外的URI?
對於每次按鍵運行一次驗證是絕對必要的嗎?單擊確定按鈕後,您是否可以不運行驗證? –
我可以。但我希望用戶在移動鼠標並單擊按鈕之前知道該URL無效。 – Phil
你可以使用['Uri.TryCreate'](http://msdn.microsoft.com/en-us/library/system.uri.trycreate.aspx)? –