Данный System.Uri не может быть преобразован в Windows.Foundation.Uri

Я пытаюсь программно загрузить BitmapImage в приложении XAML Metro. Вот мой код:

var uri = new Uri("/Images/800x600/BackgroundTile.bmp", UriKind.RelativeOrAbsolute);
var imageSource = new BitmapImage(uri);

Во второй строке происходит сбой с System.ArgumentException:

Данный System.Uri не может быть преобразован в Windows.Foundation.Uri. Подробности смотрите в http://go.microsoft.com/fwlink/?LinkID=215849.

Ссылка ведет на главную страницу MSDN, так что это бесполезно.

Я также попробовал убрать ведущие /, на случай, если WinRT имеет другие ожидания относительно относительных URI, но я все равно получаю то же исключение.

Почему я получаю это исключение для, казалось бы, совершенно правильного URI?

29
задан Joe White 27 September 2011 в 13:12
поделиться

1 ответ

Судя по документации для Windows.Foundation.Uri , похоже, что WinRT не поддерживает относительные URI. Я попытался pack:// URI , но это дало мне UriFormatException, так что, очевидно, это не способ сделать это в WinRT.

Я нашел ответ на этой теме : MS изобрела еще один формат URI для ресурсов WinRT. Это работает:

new Uri("ms-resource://MyAssembly/Images/800x600/BackgroundTile.bmp")

Обратите внимание, что вы не добавляете свое фактическое имя сборки - часть MyAssembly является буквальным текстом.

17
ответ дан 28 November 2019 в 01:31
поделиться