간단한 버튼 스타일을 만들려고합니다. 마우스 오버시 배경의 불투명도가 0.0에서 1.0으로 변경됩니다 (반대의 경우도 마찬가지 임). 단추에 대한 템플릿을 만들고 있는데 템플릿의 모든 속성을 바인딩하고 있습니다. 백그라운드에서 SolidColorBrush
을 제외하고는 모두 올바르게 작동하며 템플릿 바인딩에 바인딩 할 수 없습니다. 문맥으로 인해 TemplateBinding
이 맞지 않다고 언급했지만 다른 해결책을 찾지 못했습니다. 용의자는 Background
이 Brush
인 문제가있을 수 있으며 그 브러시의 구성 요소는 Color
입니다. 그러나이를 얻을 수는 없습니다.Background에서 SolidColorBrush에 애니메이션 적용
분명히 무시할 수있는 두 가지 다른 색상 (어떤 작품)와 두 개의 템플릿 스타일을 만드는 것입니다,하지만 하드 코딩 및 복사 붙여 넣기를 피하기 위해 싶습니다. button에 Background
속성을 지정하는 옵션은 SolidColorBrush
에서 사용되며 나머지는 불투명도가 적용됩니다.
<Button x:Name="MinimizeButton" Style="{StaticResource WindowButtonStyle}" Click="MinimizeButton_Click" Background="Green">
<Image Source="../Resources/WindowButtons/Images/win-minimize.png" Width="12" Height="12"></Image>
</Button>
추가 Background="Green"
속성 설정을 테스트 할 수 있지만, 일을하지 않았다 :
<Style TargetType="{x:Type Button}" x:Key="WindowButtonStyle">
<Setter Property="Width" Value="46" />
<Setter Property="Height" Value="32" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<Border.Background>
<SolidColorBrush x:Name="ButtonBackgroundBrush" Color="???" Opacity="0.0" />
</Border.Background>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}" />
</Border>
<ControlTemplate.Resources>
<Storyboard x:Key="MouseOverAnimation">
<DoubleAnimation Storyboard.TargetName="ButtonBackgroundBrush" Storyboard.TargetProperty="Opacity" To="1.0" Duration="0:0:0.15" />
</Storyboard>
<Storyboard x:Key="MouseOutAnimation">
<DoubleAnimation Storyboard.TargetName="ButtonBackgroundBrush" Storyboard.TargetProperty="Opacity" To="0.0" Duration="0:0:0.15" />
</Storyboard>
</ControlTemplate.Resources>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource MouseOverAnimation}" />
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource MouseOutAnimation}" />
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
다음, 버튼은 다음과 같이 사용된다.
예를하지만, 문제가있는 브러쉬의 초기 불투명도. 알파 인식 색상을 지정하지 않아도됩니다. –