2016-08-19 12 views
1

丸みのある境界線ボタンを作成しましたが、マウスオーバー時に背景色を変更できないようです。不透明度は変更されますが、背景色は変更されません。マウスオーバー時に背景色を変更します

<Style TargetType="Button" x:Key="FlatButtonStyle"> 
    <Setter Property="OverridesDefaultStyle" Value="True" /> 
    <Setter Property="Cursor" Value="Hand" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Border Name="border" BorderThickness="0" BorderBrush="Black" Background="{TemplateBinding Background}" CornerRadius="4"> 
        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
       </Border> 

      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" Value="Orange"/> 
      <Setter Property="Opacity" Value="0.91" /> 

     </Trigger> 
    </Style.Triggers> 
</Style> 

ご覧のとおり、私は不透明度がなぜ機能するのか分からないのです。しかし、それは実際のボタン自体と競合していると思います。

<Button Style="{StaticResource FlatButtonStyle}" Content="Sign In" VerticalAlignment="Top" Margin="10,267,10,0" Background="#FF3650F3" Foreground="White" Height="29" Command="{Binding SignIn}"> 

これを無効にする方法はありますか?私がやってみたいのは、バックグラウンドをオレンジ色に変える一般的な丸みのあるボタンテンプレートを作成することです。しかし、自分のボタンに表示されているように、デフォルトの背景を設定する機能が必要です。

+0

「オレンジ」色名を使用する代わりに、16進値を使用してみましたか? '#FFFFA500'のようなもの? –

+0

@GeoffJamesはい私は持っていますが、何もありません。 – Dimitri

+0

ここでこの答えを見ましたか?:http://stackoverflow.com/a/17259993/6240567 - 私はキーパーツが 'あなたの 'Style'宣言に入る –

答えて

3

は、その名前を経由して直接国境をターゲットとするには、この

<Style TargetType="Button" x:Key="FlatButtonStyle"> 
<Setter Property="OverridesDefaultStyle" Value="True" /> 
<Setter Property="Cursor" Value="Hand" /> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <Border Name="border" BorderThickness="0" BorderBrush="Black" Background="{TemplateBinding Background}" CornerRadius="4"> 
       <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
      </Border> 
<ControlTemplate.Triggers> 
    <Trigger Property="IsMouseOver" Value="True"> 
     <Setter TargetName="border" Property="Background" Value="Orange"/> 
     <Setter Property="Opacity" Value="0.91" /> 
    </Trigger> 
</ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

を試みるが、それはそこにトリガを移動するために優れていたのControlTemplateの中にあったので。不透明度設定のように名前を残しておけば、そのボタンのコントロールテンプレートのために、ボタン自体をターゲットにしていることを十分に知ることができます。したがって、個々のコンポーネントとボタンをターゲットにすることができます。

+0

これはうまくいきました。 ControlTemplateがトリガしますか? – Dimitri

+0

私はちょうど同じことをコメントしました。キーパーツは ''だと思いますか? –

+0

@Dimitri私はいくつかの説明を追加しました。私たちは常にcontroltemplateトリガを使用します。これは最も単純な方法で、常に動作します。 – adminSoftDK

関連する問題