ControlTemplates의 복잡한 작동을 고백해야합니다. 아직 책을 쓸 준비가되어 있지 않습니다. : O)ControlTemplate에서 작동하지 않을 수 있습니다.
어쨌든, 저는 고객의 HMI (휴먼 머신 인터페이스)의 요구 사항에 맞게 사용자 정의 버튼을 작성했습니다. 물론 사용자를위한 ControlTemplate을 제공했습니다. 그것.
버튼은 항상 검은 그림자를 표시하지만 마우스가 위로 가져갈 때와 같이 버튼이 "뜨거워"질 때 그림자가 변경되도록하고 싶습니다 (버튼 클래스 - HmiToolbarButton
- 속성은 "IsHot
").
<Style TargetType="{x:Type local:HmiToolbarButton}">
<Setter Property="AutoSize" Value="False" />
<Setter Property="HotBehaviorNormal" Value="True" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:HmiToolbarButton}">
<Grid x:Name="_grd">
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
>
<ContentPresenter x:Name="PART_CONTENT" />
</Border>
<local:ButtonHotDecorator IsHitTestVisible="False" IsChecked="{TemplateBinding IsChecked}" IsMouseOver="{TemplateBinding IsHot}" IsEnabled="{TemplateBinding HotBehaviorNormal}" />
<Grid.Effect>
<DropShadowEffect ShadowDepth="0" Opacity="0.9" BlurRadius="10" Color="{TemplateBinding DropShadowColor}" />
</Grid.Effect>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsHot" Value="True">
<Setter TargetName="_grd" Property="Effect">
<Setter.Value>
<!-- *** PROBLEM HERE *** -->
<DropShadowEffect
ShadowDepth="0" Opacity="0.9" BlurRadius="10"
Color="{TemplateBinding HotDropShadowColor}"
/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
검은 그림자가 작품을 좋아하지만 버튼 위에 마우스를 이동할 때 나는 전혀 효과를 얻을 수 없습니다. 나는 그것이 일정한 색으로 바뀌면 효과가 예상대로 표시되기 때문에 그것이 작동하지 않는 것으로 생각한다. TemplateBinding
.
힌트를 보내 주시면 감사하겠습니다.
감사합니다.
고마워요, 그게 다예요. 나는 템플릿을 읽을 필요가 있다는 것을 알지만 어디서나 좋은 문서를 찾기 란 어렵다. 하나 또는 두 개의 자원을 추천 할 수 있습니까? 대단히 감사하겠습니다. 건배! –
WPF Control Development Unleashed는 컨트롤과 관련된 모든 것을 다루고 있지만 VisualStateManager 및 비헤이비어와 같은 최신 항목이 빠져 있다고 생각합니다. –