1. ホーム
  2. c#

[解決済み] WPFのcodebehindでリソースにアクセスする

2023-07-01 14:52:40

質問

私は以下のようにウィンドウリソースにカスタムコレクションを定義しています(Sketchflowアプリのため、ウィンドウは実際にはUserControlです)。

<UserControl.Resources>
    <ds:MyCollection x:Key="myKey" x:Name="myName" />
</UserControl.Resources>

このコレクションをcodebehindで参照できるようにしたいのですが、x:Nameによるものだと予想されますが、アクセスできないようです。

を使って参照を得ることができます。

myRef = (MyCollection) this.FindName("myKey");

が、これはハッキングのように思えます。これは悪い習慣なのでしょうか?ありがとうございます :)

どのように解決するのですか?

この場合 System.Windows.Controls.UserControl 's FindResource() または TryFindResource() メソッドを使用します。

また、リソース辞書のキーの名前をマッピングした文字列定数を作成するのも良い方法です(一か所だけで変更できるように)。