Я пытаюсь программно загрузить 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?
Судя по документации для Windows.Foundation.Uri , похоже, что WinRT не поддерживает относительные URI. Я попытался pack://
URI , но это дало мне UriFormatException, так что, очевидно, это не способ сделать это в WinRT.
Я нашел ответ на этой теме : MS изобрела еще один формат URI для ресурсов WinRT. Это работает:
new Uri("ms-resource://MyAssembly/Images/800x600/BackgroundTile.bmp")
Обратите внимание, что вы не добавляете свое фактическое имя сборки - часть MyAssembly
является буквальным текстом.