Top > Programming > .NetFramework > WPF > ControlTemplateAndStyle > GetStyleDefinedInXAMLFromCodeBehind
Last-modified: Fri, 26 Apr 2013 08:42:24 JST
Counter:8750 Today:1 Yesterday:7 Online:4
このエントリーをはてなブックマークに追加

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;