自分向けのメモ。
xamlからアプリケーション構成ファイルを参照する場合のやり方。
別段難しいことはなく、xamlからstaticクラスのプロパティを参照するのと同じです。

目次

  1. まえがき
  2. コード
  3. その他

まえがき


アプリケーション構成ファイルとはアプリケーションの設定を保存できる設定ファイルです。
C#、VB.NETでは 前職のプログラムのように 「iniファイル」 とかいう古代遺産 に設定を保存せずにアプリケーション構成ファイルを使いましょう。

いつもはModelもしくはViewModelのプロパティに格納してBindingするのどちらかだったんだけど、今回はちょっとわけあってxamlから直接参照することにしました。

コード


以下コードです。
SampleProjectという名前のプロジェクトとして…
まず、xamlの先頭に次の一行を追加します。

1
2
//ここは名前空間の宣言なので別にpropertiesじゃなくてもよい。
xmlns:properties="clr-namespace:SampleProject.Properties"

次にバインディングしたいプロパティに次のような記述を行います。
Pathにアプリケーション構成ファイルのプロパティ名を指定し、Sourceに上記の名前空間:Settings.Defaultを指定します。
このサンプルだとボタンのContentにアプリケーション構成ファイルのButtonContentの値が表示されます。

1
2
3
<Button Grid.Column="1" Grid.Row="4" Height="25"
Content="{Binding Path=ButtonContent,Source={x:Static properties:Settings.Default}}"
/>

これだけだと、記事として短いので…
DataTriggerrにバインドする方法も書いてみる。
以下はアプリケーション構成ファイルの値でボタンのVisibilityを変えてます。

1
2
3
4
5
6
7
8
9
10
11
12
13
...省略
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Visibility,Source={x:Static properties:Settings.Default}}" Value="true">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Visibility,Source={x:Static properties:Settings.Default}}" Value="false">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style>

</Button.Style>
...省略

その他


この記事のカテゴリーわけがムズイ…
WPFって正確には言語ではないという認識なんだけど、とりあえず言語の下にカテゴライズしといた。