Я, может казаться, не могу добавить объединенный словарь к набору объединенных словарей в XAML.
Theme.xaml
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Mine;component/Themes/Palette.Blue.xaml"/>
<ResourceDictionary Source="/Mine;component/Themes/Template.xaml"/>
</ResourceDictionary.MergedDictionaries>
Ресурсы приложений
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Mine;component/Themes/Theme.xaml"/>
<!--
<ResourceDictionary Source=="/Mine;component/Themes/Palette.Blue.xaml"/>
<ResourceDictionary Source="/Mine;component/Themes/Template.xaml"/>
-->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Примечание: если я поместил оба ResourceDictionaries в Appication. MergedDictionary ресурсов (комментируют theme.xaml и не комментируют другие два словаря), они оба загрузка правильно. Однако способ, которым определяются наши ресурсы, это может означать, что будут загружены довольно много ресурсов, и для динамической загрузки я хотел бы смочь определить шаблоны.
В коде вашего примера в источнике словаря объединенных ресурсов App.xaml для Palette.Blue.xaml стоит двойной знак равенства. Я предполагаю, что это опечатка в вашем примере, опубликованном здесь, а не реальная проблема.
Может быть сложно понять, как связать все ресурсы непосредственно в XAML. Проще всего это сделать с помощью панели Resources в Blend. Я создал приложение Silverlight с файлами ресурсов, названными так, как в вашем примере, затем открыл проект в Blend и очень быстро связал их вместе.
App.xaml
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SilverlightApplication1.App">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Theme.xaml" />
<!--
<ResourceDictionary Source="Palette.Blue.xaml"/>
<ResourceDictionary Source="Template.xaml"/>
-->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Theme.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Palette.Blue.xaml"/>
<ResourceDictionary Source="Template.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Template.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="TextBox">
<Setter Property="Margin" Value="10" />
<Setter Property="Width" Value="250" />
</Style>
<Style x:Key="ReadOnlyTextBoxStyle" TargetType="TextBox">
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Margin" Value="10" />
<Setter Property="Width" Value="250" />
</Style>
</ResourceDictionary>
Palette.Blue.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="BlueSolidColorBrush" Color="SkyBlue" />
</ResourceDictionary>
MainPage.xaml
<UserControl x:Class="SilverlightApplication1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel x:Name="LayoutRoot" Background="Honeydew">
<TextBox Text="Read Only Textbox"
Style="{StaticResource ReadOnlyTextBoxStyle}" />
<TextBox Text="Blue Textbox"
Background="{StaticResource BlueSolidColorBrush}" />
<TextBox Text="Read Only, Blue Textbox"
Style="{StaticResource ReadOnlyTextBoxStyle}"
Background="{StaticResource BlueSolidColorBrush}" />
</StackPanel>
</UserControl>
Конечно, если вы соединяете ресурсы из разных сборок, это будет выглядеть по-разному. На самом деле, в этом случае я бы предложил рассмотреть возможность объединения ваших словарей в коде.