在WPF中查看格式错误的URI的XPS文档

时间:2011-01-25 17:33:35

标签: wpf xps xpsdocument

我正在尝试使用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)。

有什么想法吗?

1 个答案:

答案 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;
  } 
}