2017-11-23 31 views
2

WPFに取り掛かりました。私は2つのイベントハンドラを持っています:Mouse_Leaveでは背景が変更されていますが、Mouse_Enterでは変更されません。

private void Mouse_Enter(object sender, MouseEventArgs e) 
{ 
    ((Button)sender).Background = Brushes.Red; 
} 
private void Mouse_Leave(object sender, MouseEventArgs e) 
{ 
    ((Button)sender).Background = Brushes.Black; 
} 

マウスがボタンの領域に入ると何も起こりません。しかし、ボタンの領域を離れるとき、ボタンは黒くなります。私はMouse_Enterの中にブレークポイントを入れて、それはメソッドを実行しているだけで、背景色は変わりません。

修正方法?ありがとう!

+0

マウスの入力時に、ボタンの色がデフォルトの「ボタンホバー」に変わりますか? – Fleury26

+0

@ Fleury26はい、そうです。 –

+2

C#コード内にある必要はなく、XAMLに入れることができる場合は、[この回答]を見ることをお勧めします(https://stackoverflow.com/questions/20073294/change-color-of-button-when-マウスオーバー) – Fleury26

答えて

0

デフォルトボタンテンプレートに「組み込み」トリガーがあるため、ボタンがMouseEnterイベントで背景を変更しようとする試みを無視するため、テンプレートを編集してトリガーを無効にする必要があります

Visual Studioエディタで、ボタンを右クリックし、[テンプレートの編集]、[コピーの編集...]の順に選択し、必要なスタイルに名前を付け、XAMLでトリガを探します"IsMouseOver"を削除し、下の2行を削除します。

    <ControlTemplate.Triggers> 
         <Trigger Property="IsDefaulted" Value="true"> 
          <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
         </Trigger> 
         <Trigger Property="IsMouseOver" Value="true"> 
    --- Delete this line <Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/> 
    --- Delete this line <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/> 
         </Trigger> 
         <Trigger Property="IsPressed" Value="true"> 
+0

ありがとう、本当にありがとうコードビハインドを使ってやりたいもちろん制作目的ではなく、学習のためだけです。 XAMLトリガーを使用せずに修正する方法を教えてください。再度、感謝します! –

関連する問題