1. リソースディクショナリーの追加
Visual Studioの新しいアイテムの追加から、リソースディクショナリーを選択して、プロジェクトに追加します。今回はプロジェクトのResourcesフォルダの下にApp.Dictionary.xamlというリソースを追加しています(図2)。

2. リソースディクショナリーにスタイルの記述
次にリスト1で外部リソースファイルに持ちたいスタイルをApp.Dictionary.xamlに移します(リスト2)。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- テキストボックスの基本スタイル -->
<Style TargetType="TextBlock" x:Key="BaseText">
<Setter Property="FontSize" Value="40" />
<Setter Property="Foreground" Value="Red" />
<Setter Property="FontFamily" Value="メイリオ" />
</Style>
</ResourceDictionary>
3. リソースディクショナリーの適用
リソースディクショナリーに定義されたスタイルを適用するためには、ResourceDictionaryクラスのSourceプロパティにリソースディクショナリーのURIを指定します(リスト3)。
<UserControl x:Class="Silverlight3_7Sample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<UserControl.Resources>
<ResourceDictionary Source="Resources/App.Dictionary.xaml" />
</UserControl.Resources>
<StackPanel x:Name="LayoutRoot">
<TextBlock Style="{StaticResource BaseText}" Text="スタイルが適用された文字" />
</StackPanel>
</UserControl>
実行すると図1と同じように、リスト2で設定したスタイルを適用した文字列が表示されます。
4. リソースディクショナリーのマージ
単に外部に定義された1つのリソースディクショナリーを読み込むのであればリスト3のように指定すればよいのですが、画面ごとに異なるスタイルや複数のリソースディクショナリーの定義を利用したい場合は、ResourceDictionaryクラスのMergedDictionariesプロパティを利用する必要があります。例えば、MainPage.xaml用の外部リソースディクショナリーとページに直に定義したスタイルをリスト3に追加する場合は、ResourceDictionaryクラスの定義はリスト4のようになります。
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/App.Dictionary.xaml"/>
<ResourceDictionary Source="Resources/MainPage.Dictionary.xaml"/>
<ResourceDictionary>
<SolidColorBrush x:Key="PanelBrush" Color="Blue"/>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
