2016-08-19 4 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

관련 문제