Как загрузить изображение из XAML для составного приложения? - PullRequest
1 голос
/ 06 апреля 2011

Я видел, как загрузить изображение в Silverlight и как загрузить изображение в WPF, но я не могу понять, как загрузить изображение, используя тот же XAML для вариантов Silverlight и WPF составного приложения Prism,В идеале я хотел бы сделать что-то вроде:

<Image Source="/Resources/Images/foo.png"/>

Относительный URI, использующий нотацию компонента, не будет работать, потому что сборки Silverlight и WPF названы по-разному (специально для здравого смысла).Я использую Silverlight 4 и .NET 4.0.

Ответы [ 3 ]

3 голосов
/ 06 апреля 2011

Вы можете сделать следующее.Определите URI для изображений в отдельном словаре ресурсов.Затем проекты WPF и Silverlight определят свои собственные словари, на которые будет ссылаться проект оболочки.Вот пример:

<BitmapImage x:Key="Foo">/Resources/Images/foo.png</BitmapImage>

-

<Image Source="{StaticResource Foo}"/>
2 голосов
/ 06 апреля 2011

(перепечатано из моего комментария в качестве ответа)

Мы только что прошли ту же проверку здравомыслия именования, и способ, которым они это сделали в примерах Prism, действительно вызвал отклик:сборки имеют одинаковое имя файла, но файлы csproj для silverlight имеют добавленный .Silverlight в конце.Так что в обозревателе решений, его MyProject.Silverlight, но файл сборки просто MyProject.dll.Это дает вам здравый смысл во время разработки, но с такими же названиями сборок.(см. пример RI фондового трейдера)

1 голос
/ 06 апреля 2011

Я думал о чем-то похожем на Павло.А как насчет пользовательского MarkupExtension?

Что-то вроде

<Image Source="{PathResolver BasePath=/Resource/Images/foo.png}" />

Где Базовый путь - это некоторая относительная часть пути, которую можно использовать для разрешения полного пути на основе целевой среды (WPF илиSilverlight)

Я думаю, что решение Pavlo немного чище, но пользовательское расширение разметки может дать вам больше гибкости, и его создание тривиально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...