Xaml - Bitmap UriSource - абсолютный путь работает, относительный путь - нет, почему? - PullRequest
7 голосов
/ 24 мая 2011

Я, WPF & Xaml-noob, для консольных приложений мне удалось просто дать относительный путь к исполняемому файлу для доступа к файлу.Кажется, это не работает в xaml для меня.(код внизу)
Абсолютный путь работает отлично.

Возможно ли в XAML в приложении WPF получить доступ к файлу, просто используя относительный путь к каталогу вашего исполняемого файла какдействительный UriSource?Если да, то как, а если нет, то почему?

Я нашел следующий вопрос, где они говорили о добавлении файла с помощью «Добавить существующий элемент» в Visual Studio, так что это похоже на другую проблему.

Как установить для свойства WPF BitmapImage UriSource относительный путь?

<Window.Icon>
  <!--absolute path works:-->
  <BitmapImage UriSource="C:\LongPath\SolutionFolder\ProjectFolder\bin\Debug\path4.ico" />

  <!--none of the following relative paths worked:-->
  <!--AppDomain.CurrentDomain.BaseDirectory returns the Debug-folder-->
  <!--<BitmapImage UriSource="path4.ico" />-->
  <!--<BitmapImage UriSource="../path4.ico" />-->
  <!--<BitmapImage UriSource="Debug/path4.ico" />-->
  <!--<BitmapImage UriSource="bin/Debug/path4.ico" />-->
  <!--<BitmapImage UriSource="../bin/Debug/path4.ico" />-->
  <!--<BitmapImage UriSource="../../bin/Debug/path4.ico" />-->
  <!--<BitmapImage UriSource="../Debug/path4.ico" />-->
</Window.Icon>

Ответы [ 2 ]

11 голосов
/ 24 мая 2011

URI могут сбивать с толку, поскольку они могут ссылаться как на файлы на диске, так и на ресурсы в приложении. Таким образом, относительный путь может быть к ресурсу в приложении, если вы хотите, чтобы он был на диске.

Вы можете использовать права доступа siteoforigin для принудительной установки относительных файловых URI. Этот блог объясняет это больше, но вот пример:

pack://siteoforigin:,,,/path4.ico
4 голосов
/ 24 мая 2011

Относительные пути без уточнений ищите ссылочный файл в ресурсах приложения, если путь должен быть относительно исполняемого файла, который вы можете использовать pack://siteoforigin:,,,/path4.ico, см. Pack URIs в MSDN .

...