「Androidは電気羊の夢を見るか」を読みたい管理者のブログ

仕事などでの色々な発見を記事にしてます。不定期更新。

外部リソースを定義したい

WPFでアプリケーションを作ってるとStyleの定義を一箇所にまとめたくなる時が来ます。
いわゆるDRY原則ですね。
そのための方法をこれから示したく

  • -

参考:


連載 WPF/Silverlight UIフレームワーク入門:第3回 “見た目”を決めるリソースとスタイル (2/3) - @IT

エッセンスだけ抽出します。

①まずDictionaryファイルを作成します。これはVisualStudioであればプロジェクトを右クリック→追加→リソースディクショナリで作ってくれます

②Dictionaryファイルの最小限の構成

<ResourceDictionary
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <b><SolidColorBrush x:Key="BlueBrush" Color="Blue"/></b>
</ResourceDictionary>

太字になってるところを追加するのです。はい。
見ればわかると思いますがSolidColorBrushのリソースを定義してる所です。

③リソースの適用

<Grid>
  <Grid.Resources>
    <ResourceDictionary Source="ResourceDictionary1.xaml"/>
  </Grid.Resources>

  <Ellipse Fill=<b>"{StaticResource BlueBrush}"</b> />

</Grid>

太字になってるところで適用してます。

ただ、適用できるようにするためには小細工が必要で

④リソースファイルの読み込み

C#でいうusing文ですね。

    <StackPanel>
        <StackPanel.Resources>
            <ResourceDictionary Source="Dictionary1.xaml"/>
        </StackPanel.Resources>
    </StackPanel>

ソースの所にファイル名を指定してあげる必要があるわけです(この場合Dictionary1.xamlという名のファイルを作成した)。

以上が外部リソースを読み込むための最低限の方法になります。あとはこの応用編ですね。