よく使う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>
(コードは一部省略されています。また、画像は予め配置されています)
実行時の様子は![]()
テキスト表示と画像表示を分けられたのでOKですね。
デフォルトのイメージボタンを上手くキャンセル(Style Clear)することができました。
参照ページ
@IT 第4回 WPFの「リソース、スタイル、テンプレート」を習得しよう (2/3)
Button Content ContentTemplate ContentTemplate> DataTemplate> DynamicResource Image Source play.png Setter Property Setter> Setter.Value> StackPanel Orientation StackPanel> Static SystemColors.WindowBrushKey StaticResource StyleClearButton Style Clear Style TargetType Style> Type Button Window.Resources> XAML デフォルトスタイル イメージボタン