2016-05-02 10 views
0

ゴール ボタン背景onMouseEnterのデフォルトの動作を何もしないで、アプリケーションのロジックのボタンバックグラウンドをプログラム的に変更できます。IsMouseOverをオーバーライドし、WPFのロジックに基づいて背景色を変更します。ボタン

複数のポストは、デフォルトのマウスオーバーの動作をオーバーライド住所:

例:How do you disable MouseOver effects on a Button in WPF?

しかし、私のアプリケーションでは、私はトリガーが私の変更をオーバーライドすると、背景色を変更すると、マウスオーバーの背景色を設定しておく必要があります。 App.xaml

<Style x:Key="mainButton" TargetType="{x:Type Button}"> 

      <Setter Property="Width" Value="250"/> 
      <Setter Property="Height" Value="75"/> 
      <Setter Property="FontSize" Value="40"/> 
      <Setter Property="FontFamily" Value="Segoe UI Light"/> 
      <Setter Property="Foreground" Value="White"/> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Border Name="Border" BorderThickness="1" 

       BorderBrush="#404040"> 
         <ContentPresenter Margin="2" 
          HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          RecognizesAccessKey="True"/> 
        </Border> 
        <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="true"> 
          <Setter TargetName="Border" 
         Property="Background" Value="{x:Null}" /> 
         </Trigger> 

        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 


     </Style> 

ロジックで

<Button Content="Start" Name="buttonStart" Style="{StaticResource mainButton}" PreviewMouseDown="buttonStart_MouseDown"/> 
<Button Content="Stop" Name="buttonStop" Style="{StaticResource mainButton}" PreviewMouseDown="buttonStop_MouseDown"/> 

スタイル:

private void buttonStop_MouseDown(object sender, RoutedEventArgs e) 
     { 

     //Change background colors for buttonStop and buttonStart 

    } 

private void buttonStart_MouseDown(object sender, RoutedEventArgs e) 
     { 

     //Change background colors for buttonStop and buttonStart 

    } 

どのように私はボタンの背景が依然としてコードで背景を変更onMouseEnter、何もしない作るのですか?

+0

なぜあなただ​​けのトリガを削除しませんか? – vesan

+0

トリガーを削除することはできますが、デフォルトのmouseOverエフェクトを削除するにはいくつかの方法が必要です – johnjk07

答えて

1

トリガーを削除できない場合は、ボタンのコンテンツにTextBlockを使用して、コード内にTextBlock OnClickの背景を設定します。 TextBlockが正しく表示されるように、TextBlockがボタンを埋めるようにスタイルを調整する必要があります。このような

何か:

ます。private void buttonStop_MouseDown(オブジェクト送信者、RoutedEventArgs e)の {

//Change background colors for buttonStop and buttonStart 
    TextBlock tb = new TextBlock(); 
    tb.Background = Brushes.Blue; 
    ((Button)sender).Content = tb; 
} 
関連する問題