Просмотр документа XPS с искаженными URI в WPF - PullRequest
0 голосов
/ 25 января 2011

Я пытаюсь использовать DocumentViewer (или, более конкретно, DocumentViewer DocumentPageView), чтобы загрузить презентацию, которая была сохранена из Powerpoint как XPS.

Однако автор слайдов проявил смекалку и ввел один из своих URL-адресов в виде псевдо-регулярного выражения (например, http://[blog|www]mywebsite.com). Встроенный XPS Viewer может загрузить документ без проблем. Однако DocumentViewer выдает исключение, потому что он пытается проверить URI:

Failed to create a 'NavigateUri' from the text 'http://[blog|www]mywebsite.com'

Конечно, я мог бы перейти на слайд и исправить URI так, чтобы документ отображался. Однако, поскольку я не могу контролировать документы, которые будут использоваться с моим приложением, я бы предпочел найти способ отображения документа, несмотря на недействительные URI (например, XPS Viewer).

Есть мысли?

1 Ответ

0 голосов
/ 18 марта 2011

DocumentViewer пытается создать экземпляр Uri из предоставленного URL-адреса.Если URL-адрес недействителен, операция завершится ошибкой.

Вы можете предотвратить это, выполнив проверку 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;
  } 
}
...