Как правильно обратиться (возможно, в XAML) к связанному ресурсу в WPF? - PullRequest
2 голосов
/ 09 января 2009

Я пытаюсь сделать что-то довольно простое: добавить простой значок в главное окно приложения. Это можно сделать довольно легко. Сам значок находится в каталоге Resources, а его действие по сборке установлено на Resource. Код XAML для окна содержит ссылку на этот значок:

Icon="Resources/wiser.ico"

Это работает просто отлично. Тем не менее, я действительно хочу взять этот значок из другого места, каталога изображений, который используется несколькими версиями нашего приложения (мы поддерживаем около 5 платформ в зависимости от того, как вы считаете). В прошлом в WinForms это было сделано путем добавления ресурса в качестве существующего элемента и выбора «Добавить как ссылку» в диалоговом окне. Это, однако, вызывает проблемы со значком, отмеченным выше.

Во-первых, он не оказывается в нужном месте сборки. Reflector находит его в основном пути приложения, а не в каталоге ресурсов, где он должен быть. Несвязанная версия значка действительно отображается в каталоге ресурсов.

Во-вторых, исправление пути (Icon = "wiser.ico") позволяет компилировать объекты, но заставляет дизайнера выдавать ошибку, делая сам дизайнер бесполезным.

Я подозреваю, что это просто ошибка (или две, в зависимости от того, как вы считаете). Есть ли простой способ обойти это? Обратите внимание, что я надеялся вместо этого поддерживать ссылки из нашей системы управления исходным кодом, но это не поддерживается SVN, и конечный результат, скорее всего, будет не совсем понятен.

1 Ответ

1 голос
/ 13 января 2009

Две вещи, которые я могу придумать для совместного использования ресурсов:

1) Вы можете поместить свои ресурсы в отдельную сборку, которую вы можете использовать в своих приложениях.

Используйте этот синтаксис для получения ICO или других элементов (png, xaml и т. Д.) Из сборки:

Icon="/CommonResources;component/app.ico"

или используя синтаксис пакета

Icon="pack://application:,,,/CommonResources;component/app.ico"

2) Вы можете использовать синтаксис приложения пакета, чтобы загрузить ico в относительный путь к файлу из вашей сборки.

Icon="pack://siteoforigin:,,,/app.ico"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...