Tôi đang tạo một hộp thoại bằng cách sử dụng MVVM để nhắc người dùng nhập URL http: // vào tệp KML. Nút "OK" cần được bật khi URL ở định dạng chính xác và cần phải tắt nút này khi URL ở định dạng không chính xác.Cách tốt nhất để người dùng nhập URL được định dạng chính xác?
Ngay bây giờ nút được liên kết với một ICommand, và logic cho CanExecute() trông như thế này:
return !string.IsNullOrEmpty(CustomUrl);
kiện CanExecuteChanged của lệnh được nâng lên trên tất cả các tổ hợp phím, và cho đến nay nó hoạt động tốt.
Bây giờ tôi muốn thực hiện một chút xác thực thực tế. Cách duy nhất tôi biết để thực hiện điều đó là như sau:
try
{
var uri = new Uri(CustomUrl);
}
catch (UriFormatException)
{
return false;
}
return true;
Đó không phải là bueno, đặc biệt là khi xác thực đang diễn ra trên mỗi lần nhấn phím. Tôi có thể làm cho nó để URI được xác nhận khi người dùng nhấn nút OK, nhưng tôi không muốn. Có cách nào tốt hơn để xác nhận URI ngoài việc bắt ngoại lệ?
Bạn có bắt buộc phải chạy xác thực một lần cho mọi lần nhấn phím không? Bạn có thể không chỉ chạy xác thực khi nhấn nút OK? –
Tôi có thể. Nhưng tôi thích người dùng biết rằng URL không hợp lệ trước khi di chuyển chuột và nhấp vào nút. – Phil
Bạn có thể sử dụng ['Uri.TryCreate'] (http://msdn.microsoft.com/en-us/library/system.uri.trycreate.aspx) không? –