XAML

一時的にStyleを無効にしたい [XAML]

よく使うStyleはResources内に記述すると思いますが、一時的に(部分的に)Styleを解除するにはどうしたらいいのか?で躓いてしまいました。

HTMLのCSSではclassやidを用いて同じコントロール(HTMLではタグですね)に対して複数の定義を与えられますが、XAMLではどうやって実現するのかわかりませんでした。

基本に立ち返り、XAMLのStyle定義について調べてみました。
そこで見つけたのがStyle定義にKeyを明示する方法です。

こちらにヒントを得て動作を確認してみると…

<Window.Resources>
    <!-- Buttonのデフォルトスタイル イメージボタン -->
    <Style TargetType="{x:Type Button}">
        <Setter Property="{ContentTemplate}">
            <Setter.Value>
                <DataTemplate>
                    <Image Source="{Binding}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/><!-- 背景色をWindow色に -->
    </Style>
    
    <!-- Buttonのスタイルクリア -->
    <Style TargetType="{x:Type Button}" x:Key="StyleClearButton"/>
</Window.Resources>

<StackPanel Orientation="Horizontal">
     <Button Content="Play" Style="{StaticResource StyleClearButton}"/>
     <Button Content="./image/play.png"/>
</StackPanel>

(コードは一部省略されています。また、画像は予め配置されています)

実行時の様子は
styleclear

テキスト表示と画像表示を分けられたのでOKですね。
デフォルトのイメージボタンを上手くキャンセル(Style Clear)することができました。


参照ページ
@IT 第4回 WPFの「リソース、スタイル、テンプレート」を習得しよう (2/3)

ABOUT ME
Nozomu.Kon
トータルソフトウェアコーディネーターがあなたのお困りを即時に解決!