C#のWPFで有効・無効によって文字の色を変える

C#のWPFで使われるコントロールには IsEnabled というプロパティがあって、コントロールが有効なのか無効なのかを設定できますね。
この有効・無効の状態によって文字の色を変化させて視覚的に分かりやすく表現することができます。

 


Triggerで条件を指定する

コントロールのStyleプロパティには条件を定義できるTriggersプロパティを持っています。

この条件を定義すればコントロールの状態ごとに違ったスタイルを割り当てることができます。

TextBlockの文字の色をIsEnabledの状態ごとに指定する

<TextBlock Text="有効・無効">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Foreground" Value="Gray"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

StyleのTriggersプロパティには複数のTriggerクラスを追加できます。

Triggerには条件とするプロパティと値を指定しますが、条件に合致する場合のみ中のSetterが有効になる仕組みです。上記の例では、TextBlockのIsEnabledFalseの場合のみ文字の色がGrayで表示されるようになります。