让用户正确输入的最佳方式
我使用MVVM创建一个对话框,它提示用户输入一个http://到KML文件的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?
是的 - 你可以使用静态方法Uri.IsWellFormedUriString
return Uri.IsWellFormedUriString (CustomUrl, UriKind.Absolute);
我认为可能的解决方案有两个:
Uri.TryCreate
方法以避免异常(如果您不需要创建Uri对象,则可以使用Uri.IsWellFormedUriString
方法); 我宁愿使用第二个选项,创建正确的RegEx可能会很困难,并可能导致很多问题。
您可以将验证规则添加到控件,验证将“通过魔术”完成。
链接地址: http://www.djcxy.com/p/70229.html上一篇: Best way to get a user to input a correctly
下一篇: PUT Object to AWS S3 via HTTP through VPC Endpoint with proper ACL?