課題
Buttonのスタイルを定義する際、元のButtonにはないカスタム要素を外観に追加しようと思います。そのカスタム要素の色について、適用先のButtonが担当する役割の分類に応じて配色を変更したいと思っています。
「Buttonが担当する役割の分類」とは、数種類しかありません。例えば以下のような感じです:
- 押下すると、別の画面に遷移する
- 押下すると、Model側の処理を非メインスレッドで起動する
ここで、画面遷移系のボタンはオレンジ系に、処理実行系のボタンは緑系に、それぞれ配色を割り当てますが、全体的なデザインは配色以外は共通にしたいと思っています。
このようなとき(元々存在するBackgroundみたいなプロパティはBasedOnを使って上書きできると思いますが)スタイルに新しく追加したものはどうやって設定・管理すればいいんでしょうか。
例
以下のようにスタイルを定義します。
xml
1<Style TargetType="Button" x:Key="MyBtnStyle1"> 2 <Setter Property="Template"> 3 <Setter.Value> 4 <ControlTemplate TargetType="Button"> 5 <Border Name="border" Background="Blue" > 6 <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 7 </Border> 8 <ControlTemplate.Triggers> 9 <Trigger Property="IsPressed" Value="True"> 10 <Setter TargetName="border" Property="Background" Value="Aqua" /> 11 </Trigger> 12 </ControlTemplate.Triggers> 13 </ControlTemplate> 14 </Setter.Value> 15 </Setter> 16</Style>
ここでボタンに新しく追加した外観要素であるborderの色は非押下時はBlue、押下時はAquaに設定しています。これを、別のスタイルMyBtnStyle2ではそれぞれRed/Pinkに変更する感じです。
ちなみにこの例では色が少ないのでそれぞれBackgroundをTemplateBindingしたりすれば済みますが、実際のスタイルはもっと多くの要素を持っています。
環境
Visual Studio Professional 2019 ver.16.11.9
.NET 5

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/23 02:37