質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

3832閲覧

[WPF] ボタンの「マウスオーバーで背景色を変更する」時の範囲をコンテント以外にも適用したい。

toolscloudy

総合スコア20

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2019/06/28 01:19

編集2019/06/28 02:24

前提・実現したいこと

下の画像で「Add」と表記されている部分にカーソルを当てると背景色が変更されます。
イメージ説明
しかし、コンテントの範囲外だと変更されません。
イメージ説明
これをControlTemplateでコンテントの範囲外でも背景色が変更されるようにしたいです。

該当のソースコード

ボタンに適用しているスタイル

XAML

1 <Style TargetType="Button" x:Key="NormalButtonStyle" BasedOn="{StaticResource {x:Type Button}}"> 2 <Style.Setters> 3 <Setter Property="Width" Value="40"/> 4 <Setter Property="Height" Value="30"/> 5 <Setter Property="Foreground" Value="White"/> 6 <Setter Property="Template"> 7 <Setter.Value> 8 <ControlTemplate TargetType="Button"> 9 <Border x:Name="Border" 10 CornerRadius="8"> 11 <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/> 12 </Border> 13 <ControlTemplate.Triggers> 14 <Trigger Property="IsMouseOver" Value="True"> 15 <Setter Property="Background" Value="#888888" TargetName="Border"/> 16 </Trigger> 17 <Trigger Property="IsPressed" Value="True"> 18 <Setter Property="Background" Value="#424242" TargetName="Border"/> 19 </Trigger> 20 </ControlTemplate.Triggers> 21 </ControlTemplate> 22 </Setter.Value> 23 </Setter> 24 </Style.Setters> 25 </Style>

ボタンのコード

XAML

1<Button Content="Add" Width="Auto" Style="{StaticResource NormalButtonStyle}"> 2 <!--<Label Content="Add" Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}, Path=ActualWidth}" Foreground="White" HorizontalContentAlignment="Center"/>--> 3</Button>

試したこと

「ボタンのコード」でコメントアウトされているラベルを使用した場合は、コンテント以外でもマウスオーバーが働いたので、ContentPresenter辺りをどうにかすればいい気がするのですが、具体案が思いつきません。

できればLabelなどを使わずスタイルだけで実現したいのですが、何かいい方法はないでしょうか?

補足情報(FW/ツールのバージョンなど)

Visual Studio 2017
Wpf

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんなのでしょうか?

XAML

1<Style TargetType="Button" x:Key="NormalButtonStyle" BasedOn="{StaticResource {x:Type Button}}"> 2 <Style.Setters> 3 <Setter Property="Width" Value="100"/> 4 <Setter Property="Height" Value="30"/> 5 <Setter Property="Foreground" Value="White"/> 6 <Setter Property="Template"> 7 <Setter.Value> 8 <ControlTemplate TargetType="Button"> 9 <Border x:Name="Border" 10 Background="{TemplateBinding Background}" 11 CornerRadius="8"> 12 <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/> 13 </Border> 14 </ControlTemplate> 15 </Setter.Value> 16 </Setter> 17 </Style.Setters> 18 <Style.Triggers> 19 <Trigger Property="IsMouseOver" Value="True"> 20 <Setter Property="Background" Value="#888888"/> 21 </Trigger> 22 <Trigger Property="IsPressed" Value="True"> 23 <Setter Property="Background" Value="#424242"/> 24 </Trigger> 25 </Style.Triggers> 26</Style>

投稿2019/06/28 03:06

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toolscloudy

2019/06/28 06:21

回答ありがとうございます。 Background="{TemplateBinding Background}"を足したところ、思った通りの動作になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問