WPFのC#コードビハインドでResourceDictionaryのリソースを取得する

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

WPF の ResourceDictionary は XAML 中から使用するには便利ですが、コードビハインド(C# のコード)から取得しようと思うと意外に面倒です。

今回はアイコンをディクショナリーに登録しておき、コードビハインドから読み込んでコントロールに表示したかったので、試行錯誤してできるようになりました。

スポンサーリンク

ResourceDictionary

まず、こういう ResourceDictionary がプロジェクト内で定義されているとします(ファイル名は Icon.xaml)。この ResourceDictionary はプロパティでビルドアクションを Resource にしておきます。

コードビハインド

このときこの “TestIcon” という Canvas をコードビハインドから読み込みたい場合、下記のように記述します。

まず、XAML ファイルの位置を示す Uri を指定します。このときアセンブリー名(ここでは ABC.DEF.XXX)が必要です。アセンブリー名は通常はプロジェクト名だと思いますが、任意のものに変更している場合はそれを指定します。なお、”dll” や “exe” はいりません。

これが間違っていると

と怒られます。

また、UriKind.Relative は相対 URI であることを明示するもので、これも書いていないと

と怒られます。

次に XamlReader に渡すため、StreamResourceInfo でリソースファイルの Stream を取得します。そのストリームを、XamlReader の LoadAsync に渡してやっとこさ ResourceDictionary が取得できます。

ResourceDictionary はディクショナリーなので(当たり前)、インデクサーにキーを指定してやればオブジェクトが取得できます。

最後までお読みいただきありがとうございました m(_ _)m

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存