2015-03-03 3 views
0

У меня есть проект с несколькими классами (это проект dll). Я добавил файл xaml (назовем его styles.xaml), в котором я объявил свои наиболее часто используемые стили.Ссылка на внешний файл ресурсов ресурсов xaml

У меня есть другой проект (давайте позвоним в prog), в другом решении, в котором я хотел бы использовать стили, написанные в styles.xaml.

Я попытался щелкнуть правой кнопкой мыши prog -> добавить существующий элемент, и я выбрал styles.xaml, написал весь соответствующий код, и он сработал.

Проблема в том, что он скопировал файл styles.xaml в мой проект проекта prog (следовательно, теперь я держу две копии одного и того же файла ресурсов). В отличие от обычного dlls refrencing, он всегда будет искать его в этом каталоге, а не копировать его снова, если он не существует.

Что касается управления исходным кодом, я не хочу сохранять много копий одного и того же файла ресурсов, по одному для каждого приложения, а в текущем решении он выглядит как должен.

Я также попытался добавить ресурс и выбрать этот файл - такую ​​же проблему.

Есть ли способ это сделать?

+0

Да есть ... HTTPS://msdn.microsoft.com/en-us/library/aa350178%28v=vs.110%29.aspx –

+0

Вы также можете найти пакет nuget для хранения ваших стилей. –

+0

Я сделал это, но это работает только в том случае, если у меня есть файл xaml рядом со всеми файлами классов ... – Idanis

ответ

1

, например, у вас есть в styles.dll:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <SolidColorBrush x:Key="BlueColor" Color="Blue"/> 
    <!-- Whatever Styles you need --> 
</ResourceDictionary> 

в BlueTheme.xaml

затем ссылаться на него с:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://siteoforigin:,,,/styles;component/BlueTheme.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 
+0

Я пробовал это, но он все еще не работает ... Обязательно, чтобы и dll и приложение будет находиться под одним и тем же решением для визуальной студии? Я пытаюсь использовать файл 'xaml', который находится под' dll' внутри одного решения, внутри проекта, который является частью другого решения. Это возможно? – Idanis

+0

@Idanis Вот почему пакеты nuget пригождаются ... вам нужно как-то загрузить сборку, содержащую словарь ресурсов стилей (т. Е. Если вы получили ссылку на проект в решении или если у вас есть пакет nuget-пакетов, на который есть ссылка ресурсный словарь) компилятор не может делать догадки, где находится сборка. Также посмотрите на ссылку, как сделать правильный пакет uri ... так как я сказал, что это не тривиально –

+0

@Idanis Ссылка на ссылку находится под вашим вопросом –

Смежные вопросы