XAMLで定義したStyleをコードから取得する
About
XAML上で定義したStyleをコード側から取得する、という処理が必要な場合が稀にあります。例えばTextBlockを対象にしたStyleを定義します。このとき、対象のStyleにはx:Keyを指定します。コード側から追加される新規のTextBlockに、XAML上に定義したStyleを設定しようとする場合には、コード側からXAML上に定義したStyleを取得する必要があります。なぜならば定義したStyleはx:Keyによって対象となるTextBlockが限定されるからです。これがもしもx:Keyなどによって対象が指定されないStyleであれば、TextBlockが読み込まれた時点でStyleが適用されるので、コード側からStyleを取得するなどの処理は必要になりません。
How To
先の項目で例に取り上げたように、x:Keyを指定し、対象を限定したTextBlockのStyleをサンプルとします。
<Style TargetType="TextBlock" x:Key="TargetTextBlock"> <Setter Property="Foreground" Value="Red" /> </Style>
複雑な操作は必要なく、FindResourceによって、XAML上に定義されたStyleを取得することができます。x:Key(の文字列string)をメソッドの引数にします。FindResourceはStyleに限らず、XAML上に定義されたResourceを取得することができるので覚えておいて損はしないと思います。
textBlock.Style = FindResource("TargetTextBlock") as Style;