よく使う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 デフォルトスタイル イメージボタン