我正在尝试使用DocumentViewer(或者更具体地说,DocumentViewer的DocumentPageView)来加载从Powerpoint保存为XPS的演示文稿。
然而,幻灯片的作者很聪明,并将其作为伪正则表达式(例如http://[blog|www]mywebsite.com
)输入其中一个URL。内置的XPS Viewer能够毫无问题地加载文档。但是,DocumentViewer会抛出异常,因为它会尝试验证URI:
Failed to create a 'NavigateUri' from the text 'http://[blog|www]mywebsite.com'
我当然可以进入幻灯片并修复URI以便显示文档。但是,由于我无法控制将与我的应用程序一起使用的文档,我宁愿找到一种方法来显示文档,尽管URI无效(如XPS Viewer)。
有什么想法吗?
答案 0 :(得分:0)
DocumentViewer正在尝试从提供的URL创建Uri实例。如果URL无效,则操作将失败。
您可以通过对作者提供给您的网址执行验证来防止这种情况发生。 (在没有测试的情况下写这个,所以可能会有一些语法错误)
public static bool IsValidUrl(this string url)
{
if(string.IsNullOrWhitespace(url) return false;
try
{
var uri = new Url(url);
return true;
}
catch
{
// if you were implementing IDataErrorInfo rather than using a
// lousy extension method you would catch the exception
// here and display it to the user
return false;
}
}