Я использую Silverlight 4 и пытаюсь поделиться некоторыми общими стилями (цветами, кистями). Мой прием заключался в том, чтобы поместить их в словарь ресурсов Common.xaml, а затем использовать его во всех других ресурсо-словарях. Реферирование все так:Silverlight Shared MergedDictionaries
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SampleApp.App"
>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Assets/Styles/Common.xaml"/>
<ResourceDictionary Source="Assets/Styles/TextBoxStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Проблема заключается в том, что я получаю исключение на InitializeComponent о том, что общие стили не могут быть найдены (не удается найти ресурс с именем/Key ....)
Я должен явно ссылаться на «Common.xaml» в каждом словаре ресурсов, где я его использую ... И это в основном приводит к множеству экземпляров каждого цвета, кисти, шаблона и еще чего-то, что находится в «Common.xaml».
Разве нет возможности делиться Ресурсами, так что только один раз в Silverlight?
Фантастическое решение, спасибо! Мне пришлось изменить ваши вызовы LoadResource следующим образом: LoadResource (новый Uri («ProjectResources; компонент/Resources/Stylesheets/ComboBox.xaml», UriKind.Relative)); Когда я попробовал ваш пример, я получил исключение, что Uri не был поддержан. Кроме того, вы теряете проектный вид в Blend, когда он находится на своем месте. Я не очень люблю разработчика, поэтому я просто комментирую/раскомментирую приложение app.xaml для стилей. – dex3703